从x导入y在Windows上工作,但在Ubuntu上不工作

2024-03-29 09:39:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从另一个文件导入一个类,但它一直给我一个“ModuleNotFoundError:No module named'x'”错误。你知道吗

我想让自己成为一个小电报机器人,可以为我做各种各样的事情。我在Windows上使用PyCharm来编写代码。所有的东西都在窗户上工作。但当我把代码复制到我的VPS后,它会发出“ModuleNotFoundError”。我试过使用相对进口和绝对进口,但它们似乎都不起作用。阅读here的相对和绝对导入。你知道吗

当使用相对导入时,我得到一个不同的错误,即“\uu main\uuuu.fileName”不是一个包,我觉得这是一个倒退。你知道吗

我也认为我和这个stackexchange post的人有同样的问题。我按照那里的答案做了,并添加了一个空的“init.py”文件,但输出没有变化。然后我看到,如果我错了,请纠正我,python3.3及其以后的版本不需要在每个子目录中都有一个空的init.py文件。但我还是有。以防万一。你知道吗

我已经在同一个问题上问了很多问题。但在我看来,没有一个答案能真正解决我的问题。你知道吗

这是我现在的目录结构。你知道吗

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'

这是第1-16行主.py你知道吗

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)

文件“downloader”来自Github repo。你知道吗

我在我的Windows电脑上使用了PyCharm,它运行得非常好。在Ubuntu或任何linux发行版上运行时,我都会这样做。你知道吗


Tags: 文件nofrompyimportinitmainbot
2条回答

您可能没有从同一文件夹访问main.py。检查你的工作目录。你用的是什么版本的PyCharm?你能从候机楼查一下吗?另外,您是否尝试删除目录前缀,使其仅为from downloader import ImgurAlbumDownloader?你知道吗

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

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

对于单个测试,请在cmd中尝试:

export PYTHONPATH="$/pwd/path_to_dir"

在你开始你的剧本之前。但是你应该永久地设置这个变量。你知道吗

相关问题 更多 >