在 Anaconda Python 中导入自己的模块

Posted

技术标签:

【中文标题】在 Anaconda Python 中导入自己的模块【英文标题】:Importing own modules in Anaconda Python 【发布时间】:2021-05-18 07:16:03 【问题描述】:

我目前正在使用 conda 4.9.1 和 spyder-ide 4.1.4。在 VSCode 中导入自己编写的模块以一种简单的方式为我工作,但 spyder-ide 使用自己的 python 解释器,因此我有点卡住了。

Anaconda 安装在 C 上。我在驱动器 D:\(Python Anaconda 安装在 C:)上的文件夹树如下所示:

D:Top_package
|   
|   
+---level_one_a
|   |   my_lib.py
|   |   __init__.py
|   |   
|   \---level_two
|           hello_world.py
|           __init__.py
|           
\---level_one_b
        my_lib_b.py
        __init__.py

我正在尝试从“D:\Top_package\level_one_a\level_two”执行 hello_world.py,而 hello_world.py 包含以下代码

import sys
import os

sys.path.append('D:\Top_package\level_one_a')

from Top_package.level_one_a import my_lib

print(add(5,3))

您可以假设“D:\Top_package\level_one_a”下的 my_lib.py 定义为

def add(a,b):
    return a+b

我收到错误并尝试了所有方法。在 Visaul Studio 下导入模块工作正常。不过,Anaconda 给我带来了麻烦。

runfile('D:/Top_package/level_one_a/level_two/hello_world.py', wdir='D:/Top_package/level_one_a/level_two')
Reloaded modules: ipykernel, ipykernel._version, ipykernel.connect, ipykernel.kernelapp, zmq.eventloop, zmq.eventloop.ioloop, tornado.platform, tornado.platform.asyncio, tornado.gen, zmq.eventloop.zmqstream, ipykernel.iostream, jupyter_client.session, jupyter_client.jsonutil, jupyter_client.adapter, ipykernel.heartbeat, ipykernel.ipkernel, IPython.utils.tokenutil, ipykernel.comm, ipykernel.comm.manager, ipykernel.comm.comm, ipykernel.kernelbase, tornado.queues, tornado.locks, ipykernel.jsonutil, ipykernel.zmqshell, IPython.core.payloadpage, ipykernel.displayhook, ipykernel.datapub, ipykernel.serialize, ipykernel.pickleutil, ipykernel.codeutil, ipykernel.eventloops, ipykernel.parentpoller, pyparsing, cycler, kiwisolver, win32api, win32security, ntsecuritycon, IPython.core.completerlib, storemagic, autoreload, PIL, PIL._version, PIL.Image, PIL.ImageMode, PIL.TiffTags, PIL._binary, PIL._util, PIL._imaging, cffi, cffi.api, cffi.lock, cffi.error, cffi.model, PIL.PngImagePlugin, PIL.ImageChops, PIL.ImageFile, PIL.ImagePalette, PIL.GimpGradientFile, PIL.GimpPaletteFile, PIL.ImageColor, PIL.PaletteFile, PIL.ImageSequence, dateutil.rrule, mpl_toolkits.mplot3d, mpl_toolkits.mplot3d.axes3d, mpl_toolkits.mplot3d.art3d, mpl_toolkits.mplot3d.proj3d, mpl_toolkits.mplot3d.axis3d, ipykernel.pylab, ipykernel.pylab.backend_inline, ipykernel.pylab.config, spyder, spyder.pil_patch
Traceback (most recent call last):

  File "D:\Top_package\level_one_a\level_two\hello_world.py", line 6, in <module>
    from Top_package.level_one_a import my_lib

ModuleNotFoundError: No module named 'Top_package'

我使用默认的 spyder 解释器,我想继续使用它。在 PYTHONPATHmanager 下切换到正确安装的 python 版本 - 目前它是空的 - 将使我从 VSstudio 到 Anaconda 的转变毫无用处。我做错了什么?

sys变量如下:

print(sys.path)
['', 'C:\\Users\\admin\\AppData\\Local\\Programs\\Spyder\\Python\\python37.zip', 'C:\\Users\\admin\\AppData\\Local\\Programs\\Spyder\\Python', 'C:\\Users\\admin\\AppData\\Local\\Programs\\Spyder\\pkgs', 'C:\\Users\\admin\\AppData\\Local\\Programs\\Spyder\\pkgs\\IPython\\extensions', 'C:\\Users\\admin\\.ipython', 'D:\\Top_package\\level_one_a']

【问题讨论】:

看看这是否适合你***.com/questions/11919615/… 已检查。不能解决我的问题。 【参考方案1】:

我终于找到了解决方案。您所要做的就是检查 spyders 包路径(在我的情况下为“C:\Users\admin\AppData\Local\Programs\Spyder\pkgs”)并在那里添加您的模块。

【讨论】:

以上是关于在 Anaconda Python 中导入自己的模块的主要内容,如果未能解决你的问题,请参考以下文章

Python:安装了 Anaconda,但无法在 Jupyter 笔记本中导入 numpy 或 matplotlib

在 Dataproc 上的 Anaconda venv 中导入 PySpark 错误

在pycharm中导入自定义模块

在 python 中导入 Excel

无法在 anaconda windows 中导入 opencv

如何在 python 中导入 CSV 文件?