Пакет Pypi не устанавливается в некоторых системах

#python #python-3.x #pypi

#python #python-3.x #pypi

Вопрос:

Я создал пакет python, который я загрузил в pipy, используя следующие команды:

 python setup.py sdist bdist_wheel
twine upload dist/*
  

И setup.py это:

 import setuptools
with open("README.md", "r") as fh:
    long_description = fh.read()

setuptools.setup(
     name='pakk',  
     version='0.3',
     scripts=['pakk.py'] ,
     author="**insert Author**",
     author_email="some_email@mail.ru",
     description="pakk",
     long_description=long_description,
     long_description_content_type="text/markdown",
     url="https://some_website.nice",
     packages=setuptools.find_packages(),
     classifiers=[
         "Programming Language :: Python :: 3",
         "License :: OSI Approved :: MIT License",
         "Operating System :: OS Independent",
     ],
 )
  

Все это хорошо работает на моем компьютере с Windows 10, но в других местах это не так.
Например:

  1. В Google colab после выполнения следующих действий
 !pip install pakk
import pakk
  

Я получаю сообщение об ошибке:

 Collecting pakk
  Using cached https://files.pythonhosted.org/packages/aa/70/23a20ee172f26903ffc47b18e56c7274e078ecc4f5251e77f3f0/pakk-0.3-py3-none-any.whl
Installing collected packages: pakk
Successfully installed pakk-0.3
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-111-7f093c9bb12b> in <module>()
      1 get_ipython().system('pip install pakk')
      2 
----> 3 import pakk

ModuleNotFoundError: No module named 'pakk'
  

Хотя в этом примере он присутствует в pip list кэше и даже в нем.

  1. На repl.it модуль даже не устанавливается, он зависает на
 Package operations: 1 install, 0 updates, 0 removals

  - Installing pakk(0.3)
  

В чем может быть причина? И как мне это исправить?
На обоих этих сайтах я никогда не сталкивался с такими ошибками. Кроме того, я не уверен, что зависимости распознаются и устанавливаются, но я могу написать их вручную в любое время.

Комментарии:

1. Код не просто печатает некоторый текст. Он загружает некоторый код Python с URL-адреса и выполняет его ( exec() ), что довольно подозрительно.

2. @sinoroc извините за это, код в ссылке gust печатает текст, вы можете проверить, если хотите. Я просто тестировал…

3. Справедливо, но что произойдет, если через несколько месяцев на этом URL-адресе будет размещен вредоносный код, а не просто печатный код?

Ответ №1:

Я загрузил дистрибутивы из PyPI, чтобы проверить их.

Нет пакетов, которые find_packages() можно было бы найти. Кроме того, нет py_modules in setup.py . Так что импортировать нечего.

statsmodelier.py Модуль добавлен как scripts , поэтому он определенно не добавляется как импортируемый модуль. Если предполагается, что это импортируемый модуль, то его следует добавить py_modules вместо scripts .

Комментарии:

1. Но как мне добавить его как py_modules ? И как мне добавить модули в setup.py ? Я просто импортирую их туда?

2. Каким-то образом документация setuptools не показывает этого, но в этом случае это то же самое, что и distutils: docs.python.org/3/distutils /…

3. Хорошо, а как насчет добавления его как py_modules ?

4. О, я понял. Я просто пишу это вместо scripts и отбрасываю .py