我正在写一个基于Python的外壳脚本样板与的virtualenv,画中画,和织物Django应用程序。应该直截了当不够,但现在看来,我不能够通过shell脚本来激活并运行的virtualenv命令。

os.system('virtualenv %s --no-site-packages' % project_name)
os.system('source %s/bin/activate' % project_name)
os.system('easy_install pip')

在运行时,这错误的:

$ startproject+ -s false sample
New python executable in sample/bin/python
Installing setuptools............done.
/testing
Searching for pip
Best match: pip 0.4
Processing pip-0.4-py2.6.egg
pip 0.4 is already the active version in easy-install.pth
Installing pip script to /usr/local/bin
error: /usr/local/bin/pip: Permission denied

显然source线没有运行,但为什么呢?它是一个并发/线程问题,或virtualenv中更深层次的东西?

谢谢!

有帮助吗?

解决方案

每个os.system呼叫创建一个新进程。你需要确保activateeasy_install在同一os.systemsubprocess调用运行。

其他提示

要使用os.system每次调用运行在一个新的子shell,其具有相同的特性与原始蟒进程的命令。

尝试把命令转换成由分号分隔一个字符串。

只要不使用“源激活”的说法。它只是改变你的shell路径,首先把virtualenv中的bin目录。我相信你的脚本知道它刚刚创建的virtualenv的目录;所有你所要做的就是调用_virtualenv_dir_ /斌/的easy_install通过完整路径。或_virtualenv_dir_ / bin中/蟒为的virtualenv内运行的任何其他Python脚本。

您还可以安装virtualenvwrapper,并使用postmkvirtualenv挂钩。我用它来为我创造virtualenvs PIP和IPython的新鲜副本自动将(因为我不使用我的系统IPython的希望)。我还用它来pythonw复制到virtualenv中,否则基于WX-东西,将无法正常工作。看起来像这样:

easy_install pip
pip install -I ipython
cd ~/bin
python install_pythonw.py ${VIRTUAL_ENV}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top