Я следую за курсом О'Рейли Хэд Первый Python (2-е издание). В какой-то момент вы создадите веб-приложение и развернете его в pythonanywhere (глава 5).
В веб-приложении используются две функции, импортированные из модуля, созданного ранее.
Модуль называется vsearch.py , Я также создал readme.txt и setup.py и использовал setuptools для создания исходного дистрибутивного файла, используя:
python3 setup.py sdist
Код в файле setup.py читайте следующим образом:
from setuptools import setup
setup(
name = "vsearch",
version = "1.0",
description = "The Head First Python Seach Tools",
author = "HF Python 2e",
author_email = "hfpy2e@gmail.com",
url = "headfirstlabs.com",
py_modules = ["vsearch"],
)
Исходный дистрибутивный файл создается без ошибок и создает файл с именем vsearch-1.0.tar.gz
Затем файл загружается в pythonanywhere и устанавливается через консоль с помощью: python3 -m pip install vsearch-1.0.tar.gz --user
Выводы консоли:
15:36 ~/mysite $ python3 -m pip install vsearch-1.0.tar.gz --user
Looking in links: /usr/share/pip-wheels
Processing ./vsearch-1.0.tar.gz
Building wheels for collected packages: vsearch
Running setup.py bdist_wheel for vsearch ... done
Stored in directory: /home/Mohr/.cache/pip/wheels/85/fd/4e/5302d6f3b92e4057d341443ed5ef0402eb04994663282c12f7
Successfully built vsearch
Installing collected packages: vsearch
Found existing installation: vsearch 1.0
Uninstalling vsearch-1.0:
Successfully uninstalled vsearch-1.0
Successfully installed vsearch-1.0
Теперь, когда я пытаюсь запустить свое веб-приложение, я получаю следующую ошибку:
2020-03-24 16:18:14,592: Error running WSGI application
2020-03-24 16:18:14,592: ModuleNotFoundError: No module named 'vsearch'
2020-03-24 16:18:14,593: File "/var/www/mohr_eu_pythonanywhere_com_wsgi.py", line 16, in <module>
2020-03-24 16:18:14,593: from vsearch4web import app as application # noqa
2020-03-24 16:18:14,593:
2020-03-24 16:18:14,593: File "/home/Mohr/mysite/vsearch4web.py", line 3, in <module>
2020-03-24 16:18:14,593: from vsearch import search4letters
Исходя из этой ошибки, я предполагаю, что «vsearch» не может быть найден, поскольку он был установлен как «vsearch-1.0». ». Однако, когда я пытаюсь изменить эту строку на:
from vsearch-1.0 import search4letters
, я по праву получаю ошибку синтаксиса, так как не могу адресовать модули таким способом. Так что я могу с этим поделать? При создании модуля в начале я добавил номер версии в файл setup.py, потому что согласно лекции это хорошая практика. Затем Setuptools автоматически создает исходный дистрибутивный файл с «-1.0» в конце. Кроме того, при импорте с использованием команды, показанной выше, я автоматически получаю значение importt как «vsearch-1.0», на которое, в свою очередь, я не могу ссылаться в своем коде python из-за плохого синтаксиса.
Я что-то не так делаю? Есть ли способ импортировать это в другом пространстве имен? Есть ли способ сослаться на «vsearch-1.0» в моем python коде без получения ошибки синтаксиса?