ubuntu Python模块未发现错误,尽管Linux上有__init.py__和正确的PYTHONPATH

jecbmhm3  于 2023-02-03  发布在  Python
关注(0)|答案(2)|浏览(112)

我想在Ubuntu服务器上运行一个Python脚本,我的目录结构如下:

/home/pythontest
      |_  __init__.py
      |_  main.py
      |_  module_a.py

模块_a. py内部:

def print_a():
    print('a')

在网站内部main.py:

from pythontest.module_a import print_a
def execute():
    print_a()
execute()

当我在Windows机器上的PyCharm中运行www.example.com时,它会按预期打印a;在Linux机器上,当我调用python3 main.py时,会得到一个main.py in PyCharm on my Windows machine, it prints a as expected, on my Linux machine, when I call python3 main.py I get a

Traceback (most recent call last):
    File "main.py", line 1, in <module>
        from pythontest.module_a import print_a
ModuleNotFoundError: No module named 'pythontest'

__init__.py存在(并且完全是空的),我使用以下命令将目录/home/pythontest添加到PYTHONPATH中:

export PYTHONPATH="${PYTHONPATH}:/home/pythontest"

(使用echo $PYTHONPATH测试也会产生正确的路径)
补充说明:- 我的计算机上的python3版本是Python 3.6.9

  • 我的服务器运行Ubuntu 18.04-所有这些文件都是在Windows上用PyCharm编写的,并通过SSH复制过来
oxcyiej7

oxcyiej71#

您正在导入 pythontest.module_a),它位于 /home 中。这就是您应该添加到 PYTHONPATH 中的内容:

export PYTHONPATH=${PYTHONPATH}:/home

关于[Python.Docs]的更多详细信息:进口系统。
或者您无法从包中引用包名(考虑 relative imports):

from .module_a import print_a

可能还需要检查[SO]: How PyCharm imports differently than system command prompt (Windows) (@CristiFati's answer),看看它为什么可以从 PyCharm 工作。

a8jjtwal

a8jjtwal2#

您需要将main.py中的import更改为:

from module_a import print_a

因为module_a是一个存在于导出路径中的模块。

相关问题