解决PyCharm中导入自己写的.py函数出错问题是一个比较常见的需求,本文将提供完整的攻略,帮助读者轻松解决这个问题。
1. 确认函数所在的目录是否已经加入到PYTHONPATH中
首先要确认自己写的.py函数的所在路径是否已经加入到PYTHONPATH中,这是导入模块时Python解释器搜索路径的基础。Python解释器会按照PYTHONPATH的顺序寻找模块,因此要确保自己的函数所在目录已经被包含在其中。如何确认是否包含呢?可以在PyCharm的Terminal中用以下命令查询:
import sys
print(sys.path)
输出的结果就是Python解释器搜索路径,如果自己的函数所在目录不在其中,就需要手动添加。方法如下:
- 打开PyCharm,进入项目工程,找到项目主目录。件主目录通常在代码图上端,一般是项目名称,右键单击即可选择“Show in Explorer”进入根目录。
- 在根目录中创建一个名为
.env
或.env.local
的文件。 - 在该文件中加入以下代码:
PYTHONPATH=./
PYTHONPATH表示Python解释器的搜索路径,我们将自己的函数所在目录作为当前路径加入PYTHONPATH中。
- 重启PyCharm并重新加载虚拟环境。
2. 使用相对路径导入自己的函数
如果上述方法不起作用,还需要确认自己的代码中是否使用了正确的导入模块方法。通常情况下,我们使用绝对路径导入模块,比如:
from project.module import my_func
但在PyCharm中,如果自己写的.py文件不在一个Python Package中,绝对路径导入是不起作用的。这时候就需要使用相对路径导入:
from .module import my_func
其中的”.”表示当前目录,这样就可以顺利导入自己写的.py函数了。
下面是两个示例说明:
示例1:相对路径导入自己写的.py函数
假设我们有一个test.py文件,其所在路径为/Users/mark/test/test.py
,在这个文件中,我们自己定义了一个函数my_func(). 现在我们在另一个路径/Users/mark/run
下的main.py文件中需要导入test.py中的my_func()函数。
- 先确认自己的函数所在路径是否已经加入到PYTHONPATH中。
- 使用相对路径导入自己的函数,将以下代码添加到main.py文件中:
from ..test.test import my_func
my_func()
这里的”..”表示回到上一级目录,找到test.py文件,然后导入其中的my_func()函数。
示例2:使用sys.path添加函数所在路径
假设我们有一个test.py文件,其所在路径为/Users/mark/test/test.py
,在这个文件中,我们自己定义了一个函数my_func(). 现在我们在另一个路径/Users/mark/run
下的main.py文件中需要导入test.py中的my_func()函数。
- 确认自己的函数所在路径是否已经加入到PYTHONPATH中,如果还没有,可以手动加入。
import sys
sys.path.append('/Users/mark/test')
- 使用绝对路径导入自己的函数,将以下代码添加到main.py文件中:
from test import my_func
my_func()
这里的”from test import my_func”表示从test.py中导入my_func()函数。注意,这里并没有使用相对路径,而是直接使用了函数所在的绝对路径。
希望本文的攻略对大家有所帮助。