python3 .6 venv не находит правильный путь - PullRequest
0 голосов
/ 09 января 2020

Я отвечаю на свой вопрос здесь, чтобы сэкономить кому-то еще 2 часа, которые я потратил на выяснение этого.

Кроме того, хотя это проблема python3 .6, я думаю, что та же самая ошибка будет применить к 2.7

Я использую venv на Ubuntu 18.04, где по умолчанию python составляет 2.7. Прежде чем я решил создать venv, мне нужно было указать python3.6, чтобы получить правильную версию python для моего проекта.

Затем я решил (в качестве надлежащей практики) использовать venv. Я создал venv следующим образом:

python3.6 -m venv .

из каталога, в котором я работал. Затем -

pip install pyopenssl

Я запустил свой сценарий, как и раньше - шебанг #! /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']
>>>

Нет упоминания о моем текущем каталог вообще? Что дает?

1 Ответ

0 голосов
/ 09 января 2020

Я использовал систему 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']
>>> 

просто сказал python в пределах venv, вместо того, чтобы указывать python3.6, был реальный ключ к проблеме.

...