我正在创建一个Conda环境,并希望确保它允许任何人在我的存储库中运行脚本,而不必单独安装任何东西。但是,我的机器上已经安装了pip install
的一些包,所以,如果我理解正确的话,我的一些导入可能会工作,因为我安装了它们,而不是因为它们安装在Conda环境中。
例如,假设我使用conda create --name my_env python=3.8.8
创建了一个环境。这不应该安装Pandas,但如果我运行import pandas as pd
,它就可以工作了。我相信这是因为我已经安装了熊猫。我的问题是:
如何测试脚本是否仅适用于安装在conda环境中的包
您可以根据conda安装的历史记录创建一个yaml文件:
conda env export --from-history --name my_env > myenv.yml
在此基础上,您创建了一个新的conda环境,可以使用它来测试您的脚本:
conda env create --name conda_only --file myenv.yml
Python有可以忽略PYTHONPATH(-E
(和默认系统或用户级site-packages
(-S
(的标志,还有可以同时忽略这两个标志的组合标志(-I
((请参阅python -h
(。尝试使用这样的标志与系统隔离。类似
conda run -n my_env python -I script.py
此外,需要澄清的是,只有当您使用--user
标志(触发包的用户级安装(或某个备用位置(例如--root
或--prefix
标志(并设置了PYTHONPATH以使其可访问时,pip install
才是这样的问题。