【问题标题】:from x import y works on Windows but not on Ubuntufrom x import y 适用于 Windows 但不适用于 Ubuntu
【发布时间】:2019-05-08 18:32:29
【问题描述】:

我正在尝试从不同的文件导入一个类,但它一直给我一个“ModuleNotFoundError: No module named 'x'”错误。

我正在努力让自己成为一个可以为我做各种事情的 Telegram 小机器人。我在 Windows 上使用 PyCharm 进行编码。一切都在 Windows 上运行。但是在我将代码复制到我的 VPS 后,它会吐出“ModuleNotFoundError”。我曾尝试使用相对导入和绝对导入,但它们似乎都不起作用。阅读来自here 的相对和绝对导入。

当使用相对导入时,我得到一个不同的错误,说“__main __.fileName”不是一个包,我觉得这是一个倒退。

我也认为我和这个stackexchange post 上的人有同样的问题。我按照那里的答案做了,并添加了一个空的“init.py”文件,但我的输出没有任何变化。然后我看到了,如果我错了,请纠正我,Python 3.3 及之后的每个子目录中不需要一个空的 init.py 文件。但我还有它们。以防万一。

我已经解决了一堆关于同一问题的 stackoverflow 问题。但在我看来,没有一个答案能真正解决我的问题。

这是我现在的目录结构。

baivrau-bot/
├── env.py
├── imgurDownloader
│   ├── __init__.py
│   ├── downloader.py
│   ├── main.py
│   ├── readme.md
│   └── test.py
├── readme.md
├── requirements.txt

这是我得到的错误。第 10 行是罪魁祸首。

Traceback (most recent call last):
  File "main.py", line 10, in <module>
    from imgurDownloader.downloader import ImgurAlbumDownloader
ModuleNotFoundError: No module named 'imgurDownloader'

这是 main.py 的第 1-16 行

import telepot
from telepot.namedtuple import InputMediaPhoto
import glob
import os
import re
import time
import sys
import shutil
from hashlib import md5
from imgurDownloader.downloader import ImgurAlbumDownloader
from env import bot_token

chat_id = sys.argv[1]
imgur_link = sys.argv[2]

bot = telepot.Bot(bot_token)

文件“下载器”来自Github repo。

我在我的 Windows 计算机上使用了 PyCharm,它运行良好。除了在 Ubuntu 或任何 linux 发行版上运行时相同。

【问题讨论】:

    标签: python python-3.x windows ubuntu pycharm


    【解决方案1】:

    听起来你没有设置你的 PYTHONPATH 变量,他应该在哪里搜索你的包。

    在命令行中尝试单次测试:

    export PYTHONPATH="$/pwd/path_to_dir"
    

    在你开始你的脚本之前。但是你绝对应该永久设置这个变量。

    【讨论】:

    • 就这么简单吧.. 现在一切都按预期工作了。谢谢。
    【解决方案2】:

    您可能没有从同一个文件夹访问main.py。检查您的工作目录。您使用的是哪个版本的 PyCharm?你可以从终端运行它吗?另外,您是否尝试删除目录前缀,使其只是from downloader import ImgurAlbumDownloader?

    我的最后一个建议是遵循传统的项目结构,您的测试位于不同的文件夹中:What is the best project structure for a Python application?

    【讨论】:

    • 没想到在cmd上运行。我总是使用 PyCharm 中的内置终端。在 CMD 上运行不起作用。嗯。所以肯定是文件夹结构问题吧?
    猜你喜欢
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多