从 Python 脚本中激活 virtualenv
Activating virtualenv from within Python script
我正在尝试使用以下 python 代码激活我的 virtualenv(已经存在):
Test.py
import os, sys
filename = "activate"
exec(compile(open(filename, "rb").read(), filename, 'exec'), globals, locals)
print(os.system('pwd'))
if hasattr(sys, 'real_prefix'):
print('success')
else:
print('failed')
然后我通过终端 运行 这个脚本:
python Test.py
然后会产生此错误:
Traceback (most recent call last):
File "activate_this.py", line 3, in <module>
exec(compile(open(filename, "rb").read(), filename, 'exec'), globals, locals)
File "activate", line 4
deactivate () {
^
SyntaxError: invalid syntax
我可以通过执行cd env/bin
然后source activate
成功激活virtualenv
TLDR
从 python 脚本激活 virtualenv 从激活文件中抛出语法错误。
activate 的第 1st 行(注意 VEnv 安装在 Win,但这应该不是问题):
# This file must be used with "source bin/activate" *from bash*
那个,下面的几行应该告诉你 activate 是一个 (Bourne) shell 文件.
[Python 3]: compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) 另一方面,适用于 Python 源代码。
因此,为了执行该文件,您需要使用其他方式,例如[Python 3]: subprocess - Subprocess management.
You can check how I've used it: .
但是,我真的不明白做这一切的意义,您可能误解了同事的建议。
另请注意,即使您设法这样做,所有 环境变量也只会在调用过程中设置 ,因此它几乎无法使用(好吧,除非您也也从那里执行你的脚本)。
你应该走推荐的方式([PyPA]: Virtualenv - User Guide),也就是(来自bash) :
source /path/to/Django/ENV/bin/activate
python your_project_startup_script.py # (as I recall, it's manage.py)
我正在尝试使用以下 python 代码激活我的 virtualenv(已经存在):
Test.py
import os, sys
filename = "activate"
exec(compile(open(filename, "rb").read(), filename, 'exec'), globals, locals)
print(os.system('pwd'))
if hasattr(sys, 'real_prefix'):
print('success')
else:
print('failed')
然后我通过终端 运行 这个脚本:
python Test.py
然后会产生此错误:
Traceback (most recent call last):
File "activate_this.py", line 3, in <module>
exec(compile(open(filename, "rb").read(), filename, 'exec'), globals, locals)
File "activate", line 4
deactivate () {
^
SyntaxError: invalid syntax
我可以通过执行cd env/bin
然后source activate
TLDR
从 python 脚本激活 virtualenv 从激活文件中抛出语法错误。
activate 的第 1st 行(注意 VEnv 安装在 Win,但这应该不是问题):
# This file must be used with "source bin/activate" *from bash*
那个,下面的几行应该告诉你 activate 是一个 (Bourne) shell 文件.
[Python 3]: compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) 另一方面,适用于 Python 源代码。
因此,为了执行该文件,您需要使用其他方式,例如[Python 3]: subprocess - Subprocess management.
You can check how I've used it:
但是,我真的不明白做这一切的意义,您可能误解了同事的建议。
另请注意,即使您设法这样做,所有 环境变量也只会在调用过程中设置 ,因此它几乎无法使用(好吧,除非您也也从那里执行你的脚本)。
你应该走推荐的方式([PyPA]: Virtualenv - User Guide),也就是(来自bash) :
source /path/to/Django/ENV/bin/activate
python your_project_startup_script.py # (as I recall, it's manage.py)