此时,我使用 pyenv
+ venv
来管理 Python
版本和特定库。我的项目布局如下所示:
- 目录1
- 子目录11
- 子目录12
- 子目录13
- 目录2
- 子目录21
- 子目录22
- 子目录23
我的目标是,一旦 venv
被激活,dir1
和 dir2
就会位于 sys.path
内。基本上,我解决了这个任务,但我真的不喜欢解决方案。我在 bin/activate
文件下的 venv
中添加了自定义 PYTHONPATH
,一切正常。从部署的角度来看,这不太灵活。 venv
是否为此提供了一些hooks
?例如:激活 venv
后设置客户环境变量
或运行某些函数或类似的东西。我不喜欢在每台机器上修改 bin/activate
文件的想法。
P.S 我了解打包工具和 setuptools,但对于这个项目我无法使用它。
有什么想法吗?
谢谢!
最佳答案
另一种可能性(这通常是我使用的,并避免进入你的 venv 源代码):
创建一个 activate.sh
脚本,在其中导出模块的路径并激活 venv ie:
source venv/bin/activate
export PYTHONPATH=$PYTHONPATH:$(pwd)
那么您只需执行 source activate.sh
而不是 source venv/bin/activate
即可同时执行这两个操作。
关于python - 当 virtualenv 激活时设置 PYTHONPATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66530642/