Python 在语法错误的名称空间下导入模块?

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(

我将跟随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(
    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
等进行
--用户
安装