Django部署和虚拟环境

vlju58qv  于 2023-01-21  发布在  Go
关注(0)|答案(1)|浏览(156)

我知道有很多关于Django和虚拟环境的问题,但我不能把我的头围绕在通过uwsgi/nginx部署Django应用程序(本地)的虚拟环境的使用上。
我的设置包括一个虚拟环境(有Django和uwsgi),我的Django应用,nginx和PostgreSQL。应用是在虚拟环境之前创建的,我只对manage.py做了一个修改:

#!/Users/snafu/virtualdjango/bin/python3

启动位于虚拟环境中的uwsgi时(使用适当的.ini文件),一切马上就能正常工作,但我想知道为什么,我不需要摆弄$PYTHONPATH,或者将站点包目录附加到manage.py中的系统路径,或者在任何时候激活虚拟环境(除了软件包的初始安装之外),尽管manage.py中的样板注解明确提到不活动的虚拟环境可能是导入错误的原因。

t30tvxxf

t30tvxxf1#

激活一个虚拟环境只不过是把虚拟环境的bin/前置到$PATH,这样pythonpip就没有了从虚拟环境运行的显式路径,其他与虚拟环境相关的一切都在Python内部实现--它会自动改变sys.path和其他路径(sys.prefixsys.exec_prefix等)。
这意味着,当你从一个虚拟环境中使用绝对路径运行python时,Python会自动为这个特定的Python会话激活虚拟环境,所以你不需要显式地激活虚拟环境。
不过路上有一个小小的警告标志:要从未激活的虚拟环境运行任何Python脚本,必须将所有脚本的shebang设置为指向虚拟环境或使用sys.executable。不要使用显式python,因为它可能是与$PATH不同的Python。

相关问题