是否存在类似Makefile的Python工具,可向PYTHONPATH追加路径?
几种无需修改.bashrc的临时PYTHONPATH配置方案
不用折腾全局配置,这几种方法能实现和PyCharm一样的项目级PYTHONPATH设置,还能像Makefile一样定义重复执行的任务:
1. 直接用Makefile(最贴合你的需求)
Makefile本身就能搞定环境变量的临时设置,写个简单的规则就行,不用额外装工具:
# Makefile run: PYTHONPATH=$(CURDIR) python your_script.py test: PYTHONPATH=$(CURDIR) pytest tests/
用的时候直接在终端敲make run或者make test,CURDIR会自动取当前项目根目录,PYTHONPATH只在这个命令的生命周期内生效,完全不影响全局配置。
2. 用Python版的任务管理工具:Invoke
如果更习惯用Python写配置,可以用Invoke,它是专门的Python任务自动化工具,类似Makefile但用Python语法:
首先装Invoke:pip install invoke
然后在项目根目录写tasks.py:
# tasks.py from invoke import task import os @task def run(c): # 把当前目录加到PYTHONPATH env = os.environ.copy() env["PYTHONPATH"] = os.getcwd() c.run("python your_script.py", env=env) @task def test(c): env = os.environ.copy() env["PYTHONPATH"] = os.getcwd() c.run("pytest tests/", env=env)
运行的时候敲invoke run或者invoke test就行,同样是临时生效。
3. 轻量shell脚本(零依赖)
不想装任何工具的话,直接写个shell脚本,比如run.sh:
#!/bin/bash export PYTHONPATH=$(pwd) python your_script.py
给脚本加执行权限:chmod +x run.sh,然后运行./run.sh,PYTHONPATH只在这个脚本的会话里生效。
4. 命令行临时设置(单次运行)
如果只是偶尔跑一次,不用写配置文件,直接在命令行里临时设置:
PYTHONPATH=. python your_script.py
这个命令里的PYTHONPATH只对当前这一次Python执行有效,跑完就恢复原来的环境。
这些方法都能实现PyCharm那种项目根目录加到PYTHONPATH的效果,而且完全不会改动.bashrc之类的全局配置,每个项目可以单独定义自己的运行规则。
内容的提问来源于stack exchange,提问作者Phrixus
相关产品推荐
相关产品推荐

