Python 在语法错误的名称空间下导入模块?
我将跟随O'Riley Head的第一个Python(第二版)课程。 您将创建一个webapp并将其部署到pythonanywhere(第5章) webapp使用两个函数,从前面创建的模块导入 该模块称为vsearch.py。我还创建了一个readme.txt和一个setup.py,并使用setuptools创建了一个源分发文件,使用: python3 setup.py sdist setup.py的代码如下所示:Python 在语法错误的名称空间下导入模块?,python,module,setuptools,pythonanywhere,Python,Module,Setuptools,Pythonanywhere,我将跟随O'Riley Head的第一个Python(第二版)课程。 您将创建一个webapp并将其部署到pythonanywhere(第5章) webapp使用两个函数,从前面创建的模块导入 该模块称为vsearch.py。我还创建了一个readme.txt和一个setup.py,并使用setuptools创建了一个源分发文件,使用: python3 setup.py sdist setup.py的代码如下所示: from setuptools import setup setup(
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的文件
然后将文件上载到Pythonywhere,并通过控制台使用以下命令进行安装:
python3-mpip安装vsearch-1.0.tar.gz——用户
控制台输出:
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
现在,当我尝试运行我的webapp时,出现以下错误:
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
我理所当然地得到了一个synthax错误,因为我不能以这种方式寻址模块。那我该怎么办呢?在开始创建模块时,我在setup.py文件中添加了一个版本号,因为根据讲座,这是一个很好的实践。然后,Setuptools会自动创建源分发文件,文件末尾带有“-1.0”。另外,当使用上面显示的命令导入它时,我会自动将importett作为“vsearch-1.0”获取,而由于synthax不正确,因此我无法在python代码中引用它
我做错什么了吗?有没有办法在另一个名称空间下导入此名称?有没有办法在我的python代码中引用“vsearch-1.0”而不出现Syntax错误?pip安装--user
(使用强调的--user
)将包安装到您的用户目录中:/home/Mohr/.local/lib/pythonX.Y/site packages/
要运行WSGI应用程序,可能需要使用用户安装的模块不可用的虚拟环境。要在venv中使用模块,必须在venv中安装所有组件。因此,在终端中激活venv,并使用venv的pip
安装模块:
pip install vsearch-1.0.tar.gz
pip安装--user
(使用强调的--user
)将包安装到您的用户目录中:/home/Mohr/.local/lib/pythonX.Y/site packages/
要运行WSGI应用程序,可能需要使用用户安装的模块不可用的虚拟环境。要在venv中使用模块,必须在venv中安装所有组件。因此,在终端中激活venv,并使用venv的pip
安装模块:
pip install vsearch-1.0.tar.gz
pythonywhere上安装了不同的
python3
版本。当您使用python3-mpip
或pip3
安装某些东西时,您使用的默认python3可能与web应用程序的python版本设置不匹配。使用python3.7
和pip3.7
或python3.6
和pip3.6
等进行--用户
安装是肯定的。python3上安装的版本不同。当您使用python3-mpip
或pip3
安装某些东西时,您使用的默认python3可能与web应用程序的python版本设置不匹配。使用python3.7
和pip3.7
或python3.6
和pip3.6
等进行--用户
安装