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

问题描述 投票:0回答:2

我将与O'Riley Head First 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 = "[email protected]",
    url = "headfirstlabs.com",
    py_modules = ["vsearch"],
)

创建源分发文件而没有错误,并创建一个名为vsearch-1.0.tar.gz]的文件>

然后将该文件上传到pythonanywhere并通过控制台使用以下命令进行安装:python3 -m pip安装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

我正确地收到了synthax错误,因为我无法以这种方式处理模块。那我该怎么办?在开始时创建模块时,我在setup.py文件中添加了版本号,因为根据讲座,这是一种好习惯。然后,Setuptools会自动创建以“ -1.0”结尾的源分发文件。同样,当使用上面显示的命令导入它时,我会自动将importet取为“ vsearch-1.0”,由于合成语法错误,我无法在我的python代码中进行引用。

我做错什么了吗?有没有办法在另一个名称空间下导入它?有没有一种方法可以在我的python代码中引用“ vsearch-1.0”而不会出现synthax错误?

我将与O'Riley Head First Python(第二版)课程一起关注。某一时刻,您将创建一个Web应用程序并将其部署到pythonanywhere(第5章)。该webapp使用两个函数,导入的...

python module setuptools pythonanywhere
2个回答
0
投票

pip install --user(强调了[[--user


0
投票
[PythonAnywhere上安装了不同的python3版本。当您使用python3 -m pippip3安装某些软件时,您使用的默认python3可能与您的Web应用程序的python版本设置不匹配。确保python3.7安装使用pip3.7python3.6pip3.6--user等。
© www.soinside.com 2019 - 2024. All rights reserved.