问题描述
此时,我使用 pyenv
+ venv
来管理 Python
版本和特定库。我的项目布局如下所示:
- 目录1
- subdir11
- subdir12
- subdir13
- 目录2
- subdir21
- subdir22
- subdir23
我的目标是,一旦 venv
被激活,dir1
和 dir2
才能进入 sys.path
。基本上,我解决了这个任务,但我真的不喜欢解决方案。我在 PYTHONPATH
文件下的 venv
中添加了自定义 bin/activate
,一切正常。从部署的角度来看,这不是那么灵活。 venv
是否为此提供了一些 hooks
?例如:设置客户 environment variables
一旦 venv
被激活或运行一些功能或类似的东西。我不喜欢在每台机器上修改 bin/activate
文件的想法。
P.S 我知道包装材料和 setuptools
,但对于这个项目我不能使用它。
有什么想法吗?
谢谢!
解决方法
另一种可能性(这通常是我使用的并且避免进入你的 venv 源代码):
创建一个 activate.sh
脚本,在其中导出模块的路径并激活 venv 即:
source venv/bin/activate
export PYTHONPATH=$PYTHONPATH:$(pwd)
那么您可以只执行 source activate.sh
而不是 source venv/bin/activate
并且您将同时执行这两个操作。