python3.6 venv 找不到正确的路径



我在这里回答我自己的问题,以节省其他人花在解决这个问题上的 2 个小时。

另外,虽然这是一个python3.6问题,但我想同样的陷阱将适用于2.7

我在 ubuntu 18.04 上运行一个 venv,其中默认的 python 是 2.7。在我决定创建一个venv之前,我必须指定python3.6才能为我的项目获得正确的python版本。

然后我决定(作为适当的做法(使用 venv。我像这样创建了 venv:

python3.6 -m venv .

从我工作的目录中。然后-

pip install pyopenssl

我像以前一样运行我的脚本 - shebang 是 #!/usr/bin/python3.6

./sslchecker.py

并收到一个错误,指出它无法加载 OpenSSL 库。

所以我试了这个:

$ python3.6
Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/dominic/.local/lib/python3.6/site-packages', '/usr/lib/python3.6/site-packages', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']
>>>

没有提到我当前的目录?什么给?

我使用的是python3.6系统,而不是venv中的系统。

诀窍是停用 venv,然后从中删除系统文件夹(可能不完全必要,但我不完全确定我在黑客攻击时弄了什么乱七八糟(

$ deactivate
dominic at dominic-ThinkPad-X220 in ~/ssl-checker on master*
$ rm -rf bin include lib lib64 __pycache__ pyvenv.cfg share

然后

dominic at dominic-ThinkPad-X220 in ~/ssl-checker on master*
$ python3.6 -m venv .
dominic at dominic-ThinkPad-X220 in ~/ssl-checker on master*
$ source bin/activate
(ssl-checker) dominic at dominic-ThinkPad-X220 in ~/ssl-checker on master*
$ python --version
Python 3.6.9
(ssl-checker) dominic at dominic-ThinkPad-X220 in ~/ssl-checker on master*
$ python
Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/dominic/ssl-checker/lib/python3.6/site-packages']
>>> 

只是在 venv 中说python,而不是指定python3.6,才是问题的真正关键。

最新更新