繁体   English   中英

在 anaconda spyder 中导入自己的 .py 文件

[英]Import own .py files in anaconda spyder

我已经用蜘蛛(anaconda)编写了自己的 mail.py 模块。 我想通过“导入邮件”将这个 py 文件导入到其他 python (spider) 文件中

我在互联网上搜索,找不到明确的解决方案。

要导入任何 python 脚本,它应该存在于 PYTHONPATH 中。 您可以使用以下代码进行检查:

import sys
print sys.path

要导入您的 Python 脚本:

  1. 将两个脚本(主脚本和导入的 python 脚本)放在同一目录中。
  2. 将要导入的文件的位置添加到 sys.path 中。

例如,如果脚本位于“/location/to/file/script.py”:

 import sys
 sys.path.append('/location/to/file/')
 import script

我遇到了同样的问题,我的文件在同一个文件夹中,但在导入“to_be_imported_file.py”时抛出错误。

在将“to_be_imported_file.py”导入另一个文件之前,我必须单独运行它。

我希望它也适用于你。

有很多选择,例如

  • 将 mail.py 文件与其他 python 文件放在一起(这是有效的,因为当前的工作目录在 PYTHONPATH 上。
  • 将 mail.py 的副本保存在 anaconda python 环境的“/lib/site-packages”文件夹中,以便它可用于使用该环境的任何 python 脚本。

我做了一个稍微不同的解决方法,它不太复杂。 当我启动 anaconda 终端时,它处于 C 提示符下。 在启动 python 之前,我只是在开始窗口中做了一个 cd d:\\mypython\\lib 。 一旦我这样做了,我就可以简单地导入我自己放入该库中的类,并使用“将 MyClass 作为我的导入”,然后我就可以开始运行了。 有趣的是,我在业余时间在网上搜索了2天,也没有找到答案,直到我问了一个朋友。

cd d:\mypython\lib
python
>>> import MyClass as my
>>> my1=my.MyClass()
>>> my1.doSomething() 

在我的 anaconda/windows 10 环境 python 3.6.6 上为我工作。

从另一个文件调用任何函数时,应注意不要在函数内部导入任何库

搜索了这个问题的答案。 要将.py文件用作主文件夹中的导入模块,您需要将两个文件放在一个文件夹中或在该位置附加路径​​。 如果你将两个文件都存放在一个文件夹中,那么在spyder界面的右上角查看工作目录 由于错误的工作目录,您将看到ModuleNotFoundError

我相信最简单的解决方案是将包含 Python 文件的目录放入机器上的 Anaconda site-packages 文件夹中。 我写了一篇概述整个过程的文章,但简而言之,您需要创建一个包含 Python 脚本和__init__.py文件的文件夹。 然后将该文件夹放在 Anaconda 目录中的 site-packages 文件夹中。

在 Windows 上site-packages目录通常位于:
C:\\Users\\[your_username]\\Anaconda3\\Lib\\site-packages\\

在 Mac 上site-packages目录通常位于: Users/[your_username]/opt/anaconda3/lib/[python3.8]/site-packages/

请注意,在 Mac 上,Python 版本很重要。 您需要查找与 Anaconda 使用的(base) Python 版本对应的目录。 此外,我在上面文件路径中放置在方括号内的任何内容都需要根据您的特定机器和 Python 版本进行更改。

文件结构应如下所示:

~/
 |__site-packages/
    |__your_folder/
        script.py
        __init__.py

将包含script.py__init__.py文件的文件夹移动到 Anaconda 的site-packages子目录后,您就可以从您机器上运行的任何脚本中导入它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM