在Anaconda Python中导入自己的模块



我目前正在使用带有spyder ide 4.1.4的conda 4.9.1。在VSCode中导入自己编写的模块对我来说很简单,但spyder ide使用了自己的python解释器,因此我有点不知所措。

Anaconda安装在C上。我在驱动器D:\上的文件夹树(PythonAnaconda安装在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

我正试图从"执行hello_world.py;D: \Top_package\level_one_a\level_two";,而hello_world.py包含以下代码

import sys
import os
sys.path.append('D:Top_packagelevel_one_a')
from Top_package.level_one_a import my_lib
print(add(5,3))

正如您可以假设my_lib.py在";D: \Top_package\level_one_a"定义为

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

我犯了错误,尝试了所有的方法。在Visaul Studio下导入模块效果良好。不过蟒蛇给我带来了麻烦。

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_packagelevel_one_alevel_twohello_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的转换变得毫无用处。我做错了什么?

系统变量如下:

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']

我终于找到了解决方案。你所要做的就是检查spyders包的路径(在我的例子中是"C:\Users\admin\AppData\Local\Programs\Spyder\pkgs"),并在那里添加你的模块。

最新更新