Mac系统Anaconda3环境下,如何存储自定义.py文件以在Jupyter Notebook中导入?
嘿,这个问题我太熟悉了!在Mac的Anaconda3环境里,要让Jupyter Notebook顺利导入你的自定义.py文件或者包,有几个实用的方案,根据你的使用场景选就行:
1. 最简单的临时方案:放在当前Notebook的工作目录
如果你的自定义脚本只是给当前项目用,直接把.py文件丢到Jupyter Notebook所在的文件夹里就行。比如你的Notebook存在~/Documents/MyProject,把my_tools.py放进去,在Notebook里直接写:
import my_tools
就能导入了。缺点是换个Notebook目录就用不了,适合单个项目的小工具。
2. 全局可用:放到Anaconda环境的site-packages目录
要是你想在这个Anaconda环境的所有Notebook里都能用到这个自定义文件,就把它放到环境的site-packages目录里——这是Python默认查找包的位置之一。步骤如下:
- 先激活你的目标环境:
conda activate 你的环境名 # 比如 conda activate my_data_env - 用
conda env list查看环境的路径,一般Mac上Anaconda的环境路径是~/opt/anaconda3/envs/你的环境名 - 进入该路径下的
lib/pythonX.X/site-packages(X.X是你的Python版本,比如3.10),把你的.py文件或者整个包文件夹(记得加__init__.py空文件)放进去。 - 之后不管哪个Notebook,只要激活了这个环境,就能直接
import你的自定义包了。
小技巧:如果你的包是需要经常修改的,别直接复制文件,用
pip install -e .(前提是你的包文件夹里有setup.py或pyproject.toml),这样修改源码后不用重新复制,Notebook里导入的就是最新版本。
3. 灵活配置:添加自定义路径到Python的查找列表
不想移动文件?可以手动把你的自定义文件所在目录加到Python的sys.path里:
临时添加(仅当前Notebook有效)
在Notebook的开头写:
import sys # 替换成你的自定义文件所在的绝对路径 sys.path.append("/Users/你的用户名/MyCustomScripts") import my_utils
关闭Notebook后这个路径就失效了,适合临时测试用。
永久添加(环境内全局有效)
如果想让这个路径永久生效,就在你的Anaconda环境的site-packages目录里新建一个.pth文件(比如my_custom_paths.pth),文件里只需要写上你的自定义文件夹的绝对路径,保存后每次启动这个环境,Python都会自动加载这个路径。
注意事项
- 别给自定义文件起和Python内置包重名的名字,比如
math.py、json.py,不然会覆盖系统自带的模块,导致奇怪的错误。 - 如果是文件夹形式的包,一定要在文件夹里放一个空的
__init__.py文件(Python 3.3+其实可以不用,但为了兼容性还是加上更稳妥),这样Python才会把它识别为可导入的包。
内容的提问来源于stack exchange,提问作者David Yakobovitch

