python import自定义工具包

前言

自己开发了一个工具包,名字叫 mypackage。
位于 /mnt/develop/mypackage/。

需要在不同层级都能引用。
如果在顶级目录运行显然可以import,因为默认cwd会进入sys.path。
但是永远在顶级目录运行是不现实的。

四处看了一下解决方案。

核心就是能让import搜索到这个包。

下面对比一下各种解决方案的优劣。

1. 系统变量sys.path

每次运行某个.py时,先获取当前的

dir = os.getcwd()
或者
dir = __file__路径。
然后 sys.path.append(dir)。

2. 环境变量pythonpath

用shell脚本设置环境变量PYTHONPATH
该环境变量会自动添加到sys.path属性.

vim ~/.bashrc

添加内容

export PYTHONPATH=$PYTHONPATH:/mnt/develop/

保存退出。

本次需要手动source,以后都能自动引用。

更新:
export设置的环境变量仅在当前shell下生效。
如果是shell套shell就不能生效。
比如在一个.sh里 export 再运行另一个.sh跑模型。

3. setuptools 打包+ pip install 安装

https://www.jianshu.com/p/e7e989eeb52f

这个很不方便啊,自己的包改一下就得重新打包安装,怕不是傻子。

4. 模拟安装到第三方包 site-packages目录下

.pth 文件

Python 在遍历已有的库文件目录(sys.path中指定)过程中,如果见到一个 .pth 文件,就会将该文件中所记录的路径加入到 sys.path 设置中

由于sys.path默认会包含 /lib/site-packages/,所以在这个目录下添加.pth就会被自动搜索到。

https://www.cnblogs.com/ibingshan/p/11082510.html
@ibingshan: 该文件位于 python 的 /Lib/site-packages 目录下,可以有多个。
在 .pth 文件中可以把其它目录添加到 sys.path 中,可以是相对路径和绝对路径。
相对路径以 /Lib/site-packages 为基目录。
在 .pth 文件中,有个变量 sitedir,这个变量代表 /Lib/site-packages 的绝对路径
在 .pth 文件中,还可以添加 python 代码,注意的是完整的代码要在一行当中,分号分割命令,而且要以 import 开头。

以我的举例

cd /home/user1/anaconda3/envs/myenv/lib/python3.9/site-packages
vim my.pth

my.pth中添加内容

/mnt/develop/mypackage/

vim保存退出即可。

再测试一下

python
import sys
print(sys.path)

就能看到目录/mnt/develop/被添加到sys.path中了。

import mypackage

这次不会报错。

需要注意的是,我突发奇想,既然cwd会自动进入sys.path,在cwd下加入.pth会不会也有效呢。
经过测试无效…貌似不会扫描cwd。
或者扫描.pth的步骤,先于把cwd加入sys.path的步骤。

总结下来
2 pythonpath和 4 .pth方法最实用。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值