Python中如何在PyCharm中禁止使用setup安装的包,而引用项目中的代码运行

使用 python setup 安装了自己开发的包,但是接下来 import 到的都是安装的包,无法使用项目中修改代码后的包。希望安装的包给其它人用,而自己开发时屏蔽掉。求解决这个问题的最佳实践


Python中如何在PyCharm中禁止使用setup安装的包,而引用项目中的代码运行
29 回复

import json

import ".json"

我记得是这样


在PyCharm里,要让项目优先使用自己的代码而不是通过pip install安装的包,关键是配置Python解释器的模块搜索路径(sys.path)。

最直接的方法是在PyCharm中把项目的根目录标记为“Sources Root”。右键点击你的项目根目录文件夹,选择“Mark Directory as” -> “Sources Root”。这样,PyCharm在运行和调试时,会优先从这个目录及其子目录中导入模块。

如果这还不够,或者你需要更精细的控制,可以在运行配置里动手脚。打开“Run/Debug Configurations”,找到你的运行配置,在“Environment variables”里添加: PYTHONPATH=你的项目根目录绝对路径:$PYTHONPATH 或者在“Interpreter options”里加上: -m 参数来以模块方式运行,并确保你的包结构正确。

另一种更“硬核”的方法是在代码开头动态修改sys.path,但这通常不是最佳实践,因为它依赖于执行顺序,可能会让代码变得难以理解和维护。

总结:把项目根目录标记为Sources Root是最简单有效的方法。

try:
import '.mypackage’
except:
import mypackage

我是这个意思

我不希望修改代码,这样需要修改很多地方

好像有一个 project setting ?可以设置当前项目的 sdk 之类的,应该能解决楼主的问题吧

virtualenv 使用不同的环境呢

这样需要搞两个 env,还有同步的维护问题

sdk, 那不是 java 的东西吗

  1. 使用 pip install -e 安装
    2. 不安装,在项目目录下做一个链接

我希望安装,但是在 pycharm 中不使用

楼主是来钓鱼的么,我怎么感觉已经把所有可行的方案都给否定了。。。

import sys
sys.path.insert( 1, “your path” )

厉害,支持

两个 env 要同步什么啊,直接 pip install -r requirement.txt

我大型项目经验较少,也大概能猜到一些解决方案,但是 pythoner 不就是得追求简洁可靠的解决方案嘛!

这个也是要修改很多的代码

肯定还有其它的方案,例如设置 usercustomize

你真的试过么?

你知道如何在 pycharm 中全局添加这个 path 吗

哇,兄弟,百度

不只是需要添加,还需要覆盖掉 site-packages 中安装的包,这个涉及到包搜索优先级的问题

所以我让你插在 sys.path 的最前边啊

pycharm2017.1 专业版 添加之后在最后面,且无法调整

哥我给你写的两行代码是干啥的

我上面的回复中声明过不愿意使用这种 dirty 的方式

我上面的回复中声明过不愿意使用这种 dirty 的方式, 每个文件添加添加这样冗余的代码,看着太恶心了

兄弟,sys.path 是全部变量 你在程序的最开始改过一次之后,其他的文件读到的也是这个,甚至于多进程由于用的是 fork (),用 multi processing 库产生的子进程的 sys.path 也是修改过的。
所以我一再问你试过么
光靠想的就把楼上所有人方案推翻
中文说的好好的非要夹个英文单词
能不能静下心来好好研究?程序员这行饭这么好吃?

回到顶部