pip install -e 成功,导入失败:ModuleNotFoundError

pip install -e successful, import fails: ModuleNotFoundError

我正在尝试安装我正在开发的模块。当我使用 'pip install -e .' 时,它输出 'Successfully installed gym-mabifish' 但是当我尝试使用 'import gym_mabifish' 导入模块时,我得到 'ModuleNotFoundError: No module named "gym_mabifish"'.

包的结构如下:

gym-mabifish/
     setup.py ( https://pastebin.com/1wNykyKw )
     gym_mabifish/
          __init__.py ( https://pastebin.com/GtQid3Nk )
          envs/
               __init__.py ( https://pastebin.com/Txfk0ezE )
               mabifish_env.py ( https://pastebin.com/g50zBbus )

我正在使用 OpenAI gym 的 random_agent 来测试它。 ( https://pastebin.com/72LETtxd )

包显示在 pip 列表中:

gym-mabifish (0.0.1, x:\path\to\project\gym-mabifish)

很可能,您有两个(或更多)Python 个安装,而您的 pippython 来自不同的安装。

理想情况下,您想解决该问题。但在某些情况下,这非常困难。在 Windows,管理 PATH 可能是一场噩梦。在 macOS 上,如果您在安装 Apple 预装的 Python 2.7(pip 未附带)的同时安装第二个 Python 2.7,事情就会变得混乱。

所以,现在官方推荐的方案就是use the -m flag to run pip using whichever command you normally use to run Python

下面的所有内容都是截至 2018 年初的数据。在过去几年中更改了几次,并且将来可能会再次更改,因此最好直接转到 Installing Python Modules in the docs, or the Python Packaging User Guide。但总结一下:

理想情况下,您使用的是虚拟环境,在这种情况下,这只是 python。但如果不是:

  • Windows:
    • py
  • *nix:
    • python 仅当您明确使用 OS/distro 随附的任何内容作为默认值时。
    • python3 如果您在 *nix 上使用 3.x](https://www.python.org/dev/peps/pep-0394/)
    • python2.7 如果您在 macOS 上使用 Apple 的默认 Python 2.7。
    • python2 如果您在 *nix 上使用任何其他 2.x。

因此,例如,在 Windows 上,它应该是:

py -m pip install gym-mabifish

… 然后当你 运行 你的脚本是这样的:

py myscript.py

……就可以import gym_mabifish.