Python虚拟环境无法识别自己的站点包[重复]

4xrmg8kj  于 2023-01-06  发布在  Python
关注(0)|答案(1)|浏览(160)
    • 此问题在此处已有答案**:

Copy complete virtualenv to another pc(5个答案)
昨天关门了。
我在机器#1上创建了一个虚拟环境myenv1
我在这个虚拟环境中安装了一些软件包。
pip3 freeze显示了这个软件包列表:

cffi==1.15.1
chardet==5.0.0
click==8.0.4
cryptography==39.0.0
dataclasses==0.8
distlib==0.3.6
dnspython==2.2.1
filelock==3.4.1
Flask==2.0.3
future==0.18.2
impacket==0.10.0
importlib-metadata==4.8.3
importlib-resources==5.4.0
itsdangerous==2.0.1
Jinja2==3.0.3
ldap3==2.9.1
ldapdomaindump==0.9.4
MarkupSafe==2.0.1
natsort==8.2.0
platformdirs==2.4.0
pyasn1==0.4.8
pycparser==2.21
pycryptodomex==3.16.0
pyOpenSSL==23.0.0
six==1.16.0
typing_extensions==4.1.1
virtualenv==20.17.1
Werkzeug==2.0.3
zipp==3.6.0

我归档了文件夹myenv1并将其复制到机器#2(与机器#1相同)。
在2号机器上,我激活了myenv1pip3 freeze显示了相同的包列表,所以看起来传输成功通过了。
但是当我运行一些需要这些包的代码时,我看到的是ModuleNotFoundError: No module named 'impacket,所以Python看不到安装的包。
当我选中sys.path时,我看到虚拟环境myenv1的文件夹:

python3 -c "import sys; print('\n'.join(sys.path))"

/usr/lib64/python36.zip
/usr/lib64/python3.6
/usr/lib64/python3.6/lib-dynload
/opt/allot/igor_test/myenv1/lib64/python3.6/site-packages
/opt/allot/igor_test/myenv1/lib/python3.6/site-packages

为什么虚拟环境看不到自己的包?如何使这些包可见?

    • 统一采购司**

我发现问题了。
这是我运行的脚本:

#!/usr/bin/python3

import argparse
import re
import sys
import configparser
import io

from impacket.dcerpc.v5.rpcrt import RPC_C_AUTHN_LEVEL_PKT_INTEGRITY, RPC_C_AUTHN_GSS_NEGOTIATE
from natsort import natsorted, ns
from impacket.dcerpc.v5.dtypes import NULL
from impacket.dcerpc.v5.dcom import wmi
from impacket.dcerpc.v5.dcomrt import DCOMConnection

... //and all the code further

这个脚本指向#!/usr/bin/python3,这是一个全局Python。全局Python看不到来自虚拟环境的包。
我用我的虚拟环境中的python替换了这一行:
#!/path/to/my/virt_env/myenv1/bin/python3
一切都开始运转了。

xtfmy6hx

xtfmy6hx1#

您可以在第一台计算机上使用pip3 freeze来创建项目的requirements.txtpip3 freeze > requirements.txt)。
在第二台机器上,创建另一个虚拟环境并运行pip3 install -r requirements.txt,以便将第一台机器上安装的依赖项安装到它们应该安装的确切版本上。

相关问题