【发布时间】:2020-03-24 16:28:13
【问题描述】:
我正在关注 O'Riley Head First Python(第 2 版)课程。 在某一时刻,您将创建一个 webapp 并将其部署到 pythonanywhere(第 5 章)。
webapp 使用两个函数,从之前创建的模块导入。
该模块名为 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
现在当我尝试运行我的 web 应用程序时,我收到以下错误:
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”的源分发文件。此外,当使用上面显示的命令导入它时,我会自动将 importet 获取为“vsearch-1.0”,而由于合成器错误,我无法在我的 python 代码中引用它。
我做错了吗?有没有办法在另一个命名空间下导入它?有没有办法在我的 python 代码中引用“vsearch-1.0”而不会出现合成错误?
【问题讨论】:
标签: python module setuptools pythonanywhere