【问题标题】:How can I use Miniconda to create a pure Python virtual environment?如何使用 Miniconda 创建纯 Python 虚拟环境?
【发布时间】:2021-08-22 00:42:06
【问题描述】:

当我使用下面的命令新建一个虚拟环境时,就成功了。

conda create -n my_env python=3.7

但是当我想将新环境的包导出到requirements.txt文件时,发现已经安装了很多其他的包。

asgiref==3.3.4
asn1crypto==0.24.0
attrs==17.4.0
Automat==0.6.0
backports.entry-points-selectable==1.1.0
certifi==2018.1.18
chardet==3.0.4
click==6.7
colorama==0.3.7
configobj==5.0.6
constantly==15.1.0
cryptography==2.1.4
distlib==0.3.2
distro-info===0.18ubuntu0.18.04.1
Django==3.1.3
django-debug-toolbar==3.2.1
django-filter==2.4.0
djangorestframework==3.12.2
filelock==3.0.12
httplib2==0.9.2
hyperlink==17.3.1
idna==2.6
importlib-metadata==4.6.4
importlib-resources==5.2.2
incremental==16.10.1
keyring==10.6.0
keyrings.alt==3.0
language-selector==0.1
mysqlclient==2.0.3
netifaces==0.10.4
PAM==0.4.2
platformdirs==2.2.0
pyasn1==0.4.2
pyasn1-modules==0.2.1
pycrypto==2.6.1
pygobject==3.26.1
pyOpenSSL==17.5.0
pyserial==3.4
python-apt==1.6.4
python-debian==0.1.32
pytz==2021.1
pyxdg==0.25
PyYAML==3.12
requests==2.18.4
requests-unixsocket==0.1.5
SecretStorage==2.3.1
service-identity==16.0.0
six==1.11.0
sqlparse==0.4.1
ssh-import-id==5.7
systemd-python==234
Twisted==17.9.0
typing-extensions==3.7.4.3
ufw==0.36
urllib3==1.22
virtualenv==20.7.2
wrapt==1.12.1
zipp==3.5.0
zope.interface==4.3.2

那么我应该怎么做才能创建一个纯 Python 虚拟环境呢?换句话说,当我为新的虚拟环境导出包时,我会得到一个空白的 requirements.txt。谢谢。

【问题讨论】:

  • 这会报错:``` Error: [Errno 71] Protocol error: 'lib' -> '/home/vagrant/repos/python_utility_tools/my_env/lib64' ```跨度>

标签: python conda miniconda


【解决方案1】:

当我至少使用conda 4.9.2 创建 my_ven 时,环境似乎是空的。

>conda create -n my_env python=3.9
>conda activate my_env
>pip freeze
certifi==2021.5.30
wincertstore==0.2

【讨论】:

  • 我试过这个方法,重新安装了更高版本的Miniconda,但还是有这个问题。并且我卸载了Miniconda后,从本地Python环境导入包到requirements.txt文件,发现和我用Miniconda创建的虚拟环境的requirements.txt文件一样。 Miniconda 是否创建虚拟环境并复制本地环境的包?
  • 在发出 freeze 命令之前,您确定要使用 conda activate my_env 激活 my_env 环境吗?
  • 是的。我正在使用虚拟机 + Ubuntu。在使用 Miniconda 创建虚拟环境之前,我在本地环境中安装了一些包。于是我重新创建了一个虚拟机,保持本地Python环境纯净,然后我用Miniconda创建了一个虚拟环境,得到了一个全新的纯净虚拟环境。问题好像解决了,但是 Miniconda 新建了一个虚拟环境,并复制了本地环境包,这让我很纳闷。
【解决方案2】:

这可能是由于定义了 PYTHONPATH 变量,或者之前在系统或用户级别安装了包(例如,pip install --user)。

要正确隔离 Python 环境(Conda 所期望的),用户应取消设置 PYTHONPATH 并删除所有用户级包(通常在 ~/.local/lib/python*/site-packages 中)。

安装不同版本的 Python 会导致干净的解释器 REPL 的原因是 Python 包只兼容次要版本。也就是说,您要么在 PYTHONPATH 中有另一个 Python 3.7,要么有一个 ~/.local/lib/python3.7/site-packages

请参阅Using Pip with Conda 上的其他文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 2019-10-13
    • 2023-03-05
    相关资源
    最近更新 更多