是否有可能确定当前脚本是否在virtualenv环境中运行?
当前回答
这里已经发布了很多很棒的方法,但只需要再添加一个:
import site
site.getsitepackages()
告诉您PIP安装包的位置。
其他回答
检查你的Virtualenv内部:
import os
if os.getenv('VIRTUAL_ENV'):
print('Using Virtualenv')
else:
print('Not using Virtualenv')
您还可以获得有关您的环境的更多数据:
import sys
import os
print(f'Python Executable: {sys.executable}')
print(f'Python Version: {sys.version}')
print(f'Virtualenv: {os.getenv("VIRTUAL_ENV")}')
它不是万无一失的,但是对于UNIX环境的简单测试,比如
if run("which python3").find("venv") == -1:
# something when not executed from venv
对我来说很好。这比测试现有的某些属性要简单得多,无论如何,您应该将venv目录命名为venv。
你可以选择哪个python,看看它是否指向虚拟环境中的那个。
在windows操作系统中,你会看到这样的东西:
C:\Users\yourusername\virtualEnvName\Scripts>activate
(virtualEnvName) C:\Users\yourusername\virtualEnvName\Scripts>
括号表示您实际处于名为“virtualEnvName”的虚拟环境中。
一个潜在的解决方案是:
os.access(sys.executable, os.W_OK)
在我的例子中,我真的只是想检测我是否可以用pip原样安装项目。虽然这可能不是所有情况下的正确解决方案,但请考虑简单地检查您是否具有Python可执行文件位置的写权限。
注意:这适用于所有版本的Python,但如果你使用sudo运行系统Python,也会返回True。下面是一个潜在的用例:
import os, sys
can_install_pip_packages = os.access(sys.executable, os.W_OK)
if can_install_pip_packages:
import pip
pip.main(['install', 'mypackage'])
推荐文章
- 如何删除Python中的前导空白?
- python中的assertEquals和assertEqual
- 如何保持Python打印不添加换行符或空格?
- 为什么Python的无穷散列中有π的数字?
- Python 3.7数据类中的类继承
- 如何在PyTorch中初始化权重?
- 计数唯一的值在一列熊猫数据框架像在Qlik?
- 使用Pandas将列转换为行
- 从matplotlib中的颜色映射中获取单个颜色
- 将Pandas或Numpy Nan替换为None以用于MysqlDB
- 使用pandas对同一列进行多个聚合
- 使用Python解析HTML
- django MultiValueDictKeyError错误,我如何处理它
- 如何在for循环期间修改列表条目?
- 我如何在Django中创建一个鼻涕虫?