Недавно я столкнулся со странным сценарием, в котором я хотел преобразовать свой (правильно отформатированный) пакет Python coolpackage
в тарбол для простого распространения среди некоторых коллег, однако валидность получившегося тарбола зависит от ОС, используемой для сгенерируйте его.
Для контекста, coolpackage
можно установить из исходного каталога через pip
на macOS и в Ubuntu Linux без проблем:
cd coolpackage
pip install .
Это работает на обоих macOS и Linux, и в обоих случаях он выполняется в среде conda
, которая идентична с точки зрения пакетов.
Теперь, если я сгенерировал тарбол в Ubuntu
# run inside Ubuntu 18.04
tar -czvf coolpackage.tar.gz coolpackage
Затем этот tar.gz
файл может быть установлен с помощью pip как в macOS, так и в Ubuntu:
pip install coolpackage.tar.gz
Однако, если я сгенерирую tarball в macOS
# run inside macOS Mojave
tar -czvf coolpackage.tar.gz coolpackage
That tarball не устанавливается ни в macOS, ни в Ubuntu, и в обоих случаях завершает работу с практически одинаковой ошибкой (несмотря на пути):
pip install coolpackage.tar.gz
Processing ./coolpackage.tar.gz
ERROR: Command errored out with exit status 1:
command: /Users/alex/Python/conda/envs/localconda/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/2n/xtzsyspd32v6vglg_pd5gmw80000gn/T/pip-req-build-tz8wnxlx/setup.py'"'"'; __file__='"'"'/private/var/folders/2n/xtzsyspd32v6vglg_pd5gmw80000gn/T/pip-req-build-tz8wnxlx/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/2n/xtzsyspd32v6vglg_pd5gmw80000gn/T/pip-req-build-tz8wnxlx/pip-egg-info
cwd: /private/var/folders/2n/xtzsyspd32v6vglg_pd5gmw80000gn/T/pip-req-build-tz8wnxlx/
Complete output (5 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/Users/alex/Python/conda/envs/localconda/lib/python3.7/tokenize.py", line 447, in open
buffer = _builtin_open(filename, 'rb')
FileNotFoundError: [Errno 2] No such file or directory: '/private/var/folders/2n/xtzsyspd32v6vglg_pd5gmw80000gn/T/pip-req-build-tz8wnxlx/setup.py'
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Интересно, сталкивался ли кто-нибудь с этим ранее или вы GHTS о том, что может происходить? Я могу избежать этого, встроив Linux, поэтому это не является немедленной проблемой, но мне не нравится не понимать , почему что-то не получается.