我正在和我的团队一起开发几个不同的 Python 包。假设我们有 ~/src/pkg1
、~/src/pkg2
和 ~/src/pkg3
。我们如何将这些添加到 PYTHONPATH
而无需我们每个人都管理点文件?
我们可以添加,比如说,~/src/site/sitecustomize.py
,它被添加到 PYTHONPATH
中一次,但是否“保证”不会不是全局 sitecustomize.py
。
virtualenv 似乎是错误的解决方案,因为我们不想在每次更改后都必须构建/安装包。
最佳答案
你有很多选择......
1) 为什么不用点文件?
您可以使用集中式存储库和可选的版本控制来集中管理点文件。我使用名为 dotfiles
的 Dropbox 文件夹,但许多人使用 github
或其他类似服务来管理点文件。
如果这样做,您将保证开发团队中的每个人都共享一些点文件。因此,您可以定义一个点文件,例如 .python_proys
,它导出适当的 PATH
和 PYTHONPATH
,按照惯例每个开发人员都应该source
在他们的环境中。
假设pkg1只是一个脚本,pkg2是一个脚本也是一个模块,pk3只是一个模块。然后,python_proys 示例:
export PATH=$PATH:~/src/pkg1:~/src/pkg2
export PYTHONPATH=$PYTHONPATH:~/src/pkg2:~/src/pkg3
然后,每个开发人员都必须按照约定从某个地方获取
这个点文件。每个人都会按照自己喜欢的方式去做。在使用包之前,可以手动source
点文件。另一个人可以在他的 .bashrc
或 .zshenv
或适用于他的任何点文件中 source
它。
想法是建立一个集中的协调点,并且只维护一个点文件:.python_proys 点文件。
2) 使用符号链接(symbolic link)
你可以在你的家定义一个目录,比如 ~/dist
(对于模块)和 ~/bin
(对于脚本),并在那里设置指向特定目录的符号链接(symbolic link)~/src/
中的 pakages,并让每个开发人员都有此 PATH
和 PYTHONPATH
设置:
export PATH=$PATH:~/bin
export PYTHONPATH=$PYTHONPATH:~/dist
所以,使用 Why not dotfiles? 中的相同示例,其中 pkg1 只是一个脚本,pkg2 是一个脚本,也是一个模块而 pkg3 只是一个模块,那么您可以像这样进行符号链接(symbolic link):
cd ~/bin
ln -s ../src/pkg1
ln -s ../src/pkg2
cd ~/dist
ln -s ../src/pkg2
ln -s ../src/pkg3
这些命令可以通过脚本自动执行。您可以编写 Bootstrap 脚本,或者简单地复制并粘贴命令并将其保存在 shell 脚本中。无论如何,按照我之前解释的方式维护它并集中它。
这样 .dotfiles 不会改变,只有定义符号链接(symbolic link)的脚本。
关于python - 为开发环境管理 PYTHONPATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24982125/