python - 通过 os.system() 激活 virtualenv

标签 python django virtualenv fabric pip

我正在编写一个基于 Python 的 shell 脚本,以使用 virtualenv、pip 和 fabric 对 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 都会在一个新的子 shell 中运行命令,该子 shell 具有与原始 python 进程相同的属性。

尝试将命令放入一个由分号分隔的字符串中。

关于python - 通过 os.system() 激活 virtualenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1691076/

相关文章:

python - 使用 Reportlab 的多个页面 - Django

python - Django + Uvicorn

python - 将 PositiveSmallIntegerField 迁移到 PositiveIntegerField 并在 Postgres 中使用 BIGINT 字段

python - virtualenv pip mysqldb mac os X python

c# - 从 C# 客户端向 python 服务器发送 http POST 请求时出错

python - 如何检查 PyTorch 数据集子集中标签的分布?

python - 创建数据库连接并维护多个进程(多处理)

python - re.sub 将模板转换为函数

python - 在 vim 中设置 python virtualenv

python - readthedocs 和 autodoc - 我如何 "enable virtualenv"?