У меня есть две среды Python, и между ними есть какая-то связь.
/home/testapi/API25/env
это оригинальный venv /home/preprodapi/API25/env
был создан с помощью копии cpio с первого. Это работало найти в течение многих месяцев. Но теперь возникла проблема.
Симптом заключается в том, что в preprodapi пакет pytz не может найти часовой пояс Africa/Johannesburg
(и, предположительно, другие), о чем свидетельствует трассировка стека:
Traceback (most recent call last):
File "/home/preprodapi/API25.8512/validator/echo.py", line 244, in jsonified_wrapper
response_obj = request_handler(*args, **kwargs)
File "/home/preprodapi/API25.8512/validator/echo.py", line 478, in bearer_token_wrapper
return request_handler(*args, **kwargs)
File "/home/preprodapi/API25.8512/validator/echo.py", line 1068, in globaldb_connection_wrapper
return request_handler(*args, **kwargs)
File "/home/preprodapi/API25.8512/validator/echo.py", line 569, in get_school_wrapper
return request_handler(*args, **kwargs)
File "/home/preprodapi/API25.8512/validator/echo.py", line 697, in school_admin_wrapper
return request_handler(*args, **kwargs)
File "/home/preprodapi/API25.8512/routehandlers.py", line 4035, in email_report
do_email_report(kwargs.get('reportid'), json_attrs, getctx_school().get('schoolname'))
File "/home/preprodapi/API25.8512/validator/echo.py", line 1155, in do_email_report
tz = pytz.timezone(sender.school.get("local_timezone"))
File "/home/testapi/API25/env/lib64/python3.5/site-packages/pytz/__init__.py", line 181, in timezone
pytz.exceptions.UnknownTimeZoneError: 'Africa/Johannesburg'
Обратите внимание, как он переключается с /home/preprodapi/.... на /home/testapi/... в последнем элементе.
Но ПОЧЕМУ это происходит?
(env) [root@ip-172-31-8-200 API25]# deactivate
[root@ip-172-31-8-200 API25]# pwd
/home/preprodapi/API25
[root@ip-172-31-8-200 API25]# . env/bin/activate
(env) [root@ip-172-31-8-200 API25]# pip uninstall pytz
Uninstalling pytz-2017.2:
Would remove:
/home/testapi/API25/env/lib/python3.5/site-packages/pytz-2017.2.dist-info/*
/home/testapi/API25/env/lib/python3.5/site-packages/pytz/*
Proceed (y/n)? n
(env) [root@ip-172-31-8-200 API25]# python
Python 3.5.5 (default, Feb 6 2018, 10:57:32)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pytz
>>> print(pytz.timezone('Africa/Johannesburg'))
Africa/Johannesburg
Для записи я не могу найти никаких программных ссылок между venv
(env) [root@ip-172-31-8-200 API25]# pwd
/home/preprodapi/API25
(env) [root@ip-172-31-8-200 API25]# find env -type l -ls
40549590 0 lrwxrwxrwx 1 root root 3 Feb 4 12:54 env/lib64 -> lib
40549592 0 lrwxrwxrwx 1 root root 15 Feb 4 12:54 env/bin/python3.5m -> /bin/python3.5m
40549593 0 lrwxrwxrwx 1 root root 10 Feb 4 12:54 env/bin/python -> python3.5m
40549594 0 lrwxrwxrwx 1 root root 10 Feb 4 12:54 env/bin/python3 -> python3.5m
Помогите, пожалуйста!
Примечание PS /home/preprodapi/API25.8512 — это cpio-копия /home/preprodapi/API25. Я получаю точно такие же результаты при тестировании в подкаталоге API25.8512.
Примечание № 2: То же самое не происходит с другим поставщиком на этом хосте.
[root@ip-172-31-8-200 API25.8512]# cd /home/apiuser
[root@ip-172-31-8-200 apiuser]# cd API25
[root@ip-172-31-8-200 API25]# . env/bin/activate
(env) [root@ip-172-31-8-200 API25]# pip uninstall pytz
Uninstalling pytz-2018.9:
Would remove:
/home/apiuser/API25/env/lib/python3.5/site-packages/pytz-2018.9.dist-info/*
/home/apiuser/API25/env/lib/python3.5/site-packages/pytz/*
Proceed (y/n)? n
cpio
это архиватор, а не утилита копирования. - person ivan_pozdeev   schedule 04.02.2019venv
, установите в него какие-то пакеты, а затем скопируете его? - person ivan_pozdeev   schedule 04.02.2019pytz.__file__
после того, как вы удалилиpytz
из текущей виртуальной среды? - person chepner   schedule 04.02.2019sys.path
иPYTHONPATH
? Вы уверены, что находитесь в правильном месте, когда происходит первая ошибка? - person ivan_pozdeev   schedule 05.02.2019