python - 为开发环境管理 PYTHONPATH

标签 python virtualenv pythonpath

我正在和我的团队一起开发几个不同的 Python 包。假设我们有 ~/src/pkg1~/src/pkg2~/src/pkg3。我们如何将这些添加到 PYTHONPATH 而无需我们每个人都管理点文件?

我们可以添加,比如说,~/src/site/sitecustomize.py,它被添加到 PYTHONPATH 中一次,但是否“保证”不会不是全局 sitecustomize.py

virtualenv 似乎是错误的解决方案,因为我们不想在每次更改后都必须构建/安装包。

最佳答案

你有很多选择......

1) 为什么不用点文件?

您可以使用集中式存储库和可选的版本控制来集中管理点文件。我使用名为 dotfiles 的 Dropbox 文件夹,但许多人使用 github 或其他类似服务来管理点文件。

如果这样做,您将保证开发团队中的每个人都共享一些点文件。因此,您可以定义一个点文件,例如 .python_proys,它导出适当的 PATHPYTHONPATH,按照惯例每个开发人员都应该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,并让每个开发人员都有此 PATHPYTHONPATH 设置:

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/

相关文章:

python - Windows 10 Bash 和 python 路径

PyCharm:如何将一个项目用作另一个项目的依赖项?

python - 如何使用 Google Colab python 读取/循环访问文件夹中的多个 .csv 文件,然后将每个文件分配为函数参数

python - 打开目录中的每个文本文件,然后替换每个文本文件中的特定行

python - 使用 ctypes 在其内部包含另一个结构的结构

python - 将 virtualenv 从 3.5.3 降级到 2.7

Python:如何从不满足特定条件的元素创建列表

python - 无法以非 root 用户身份激活 virtualenv

python - AWS lambda 表示它支持 python 2.7 和 3.6,但 3.6 不在 amazon linux ami 的 repos 中

python - 在 emacs 中设置正确版本的 Python 和 PYTHONPATH 变量