from x import y在Windows上适用,但在Ubuntu上不适用

时间:2019-05-08 18:32:29

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

我正在尝试从其他文件导入类,但它一直给我一个“ ModuleNotFoundError:没有名为'x'的模块”错误。

我正在尝试使自己成为一个可以为我做各种事情的小电报机器人。我在Windows上使用PyCharm进行编码。一切都在Windows上运行。但是,当我将代码复制到我的VPS之后,它会吐出“ ModuleNotFoundError”。我试图使用相对进口和绝对进口,但似乎都没有用。了解来自here的相对和绝对导入。

使用相对导入时,出现另一个错误,提示“ __main __。fileName”不是软件包,我觉得这是倒退。

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

关于相同的问题,我已经经历了很多stackoverflow问题。但是我认为,这些答案都无法真正解决我的问题。

这是我的目录结构。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

<ul class="nav">
  <li><a href="file1.php">solo page</a></li>
  <li class="hassub">
    <a href="#">submenu1 (mixed) &#x25BC;</a>
    <ul class="nav-sub">
      <li><a href="file2.php">page 1a</a></li>
      <li><a href="file3.php">page 1b</a></li>
      <li><a class="ajaxlink" href="#">ajax 1-1</a></li>
      <li><a href="file2.php">page 1c</a></li>
      <li><a href="file3.php">page 1d</a></li>
    </ul>
  </li>
  <li class="hassub">
    <a href="#">submenu2 (only pages) &#x25BC;</a>
    <ul class="nav-sub">
      <li><a href="file2.php">page 2a</a></li>
      <li><a href="file3.php">page 2b</a></li>
    </ul>
  </li>
  <li id="hassub3" class="hassub">
    <a href="#">submenu3 (only ajax) &#x25BC;</a>
    <ul id="sub3" class="nav-sub">
      <li><a class="ajaxlink" href="#">ajax 3-1</a></li>
      <li><a class="ajaxlink" href="#">ajax 3-2</a></li>
    </ul>
  </li>
</ul>

这是我遇到的错误。第十行是元凶。

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

这是main.py上的1-16行

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

文件“下载器”来自Github repo

我在Windows计算机上使用了PyCharm,它完全可以正常工作。在Ubuntu或任何Linux发行版上运行时,我除外。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

像您这样的声音没有在您应该搜索软件包的位置设置PYTHONPATH变量。

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

export PYTHONPATH="$/pwd/path_to_dir"

在您启动脚本之前。但是您绝对应该永久设置此变量。