#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, но в других местах это не так.
Например:
- В 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
кэше и даже в нем.
- На 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