在 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 错误