我用-e安装了一些软件包
> pip install -e git+https://github.com/eventray/horus.git@2ce62c802ef5237be1c6b1a91dbf115ec284a619#egg=horus-dev
Run Code Online (Sandbox Code Playgroud)
我看到了pip冻结
> pip freeze
...
-e git+https://github.com/eventray/horus.git@2ce62c802ef5237be1c6b1a91dbf115ec284a619#egg=horus-dev
...
Run Code Online (Sandbox Code Playgroud)
当我尝试卸载软件包时出现错误:
> pip uninstall horus-dev
Cannot uninstall requirement horus-dev, not installed
> pip uninstall horus
Cannot uninstall requirement horus, not installed
Run Code Online (Sandbox Code Playgroud)
如何卸载这样的包?
嗨我正在尝试使用setuptools进行python打包并测试我是否在开发模式下安装了模块.即
python setup.py develop
Run Code Online (Sandbox Code Playgroud)
这已将我的modules目录添加到sys.path.现在我想删除模块有没有办法做到这一点?
提前致谢
另一位开发人员和我不同意是否应该使用PYTHONPATH或sys.path来允许Python在用户(例如,开发)目录中查找Python包.
我们有一个具有典型目录结构的Python项目:
Project
setup.py
package
__init__.py
lib.py
script.py
Run Code Online (Sandbox Code Playgroud)
在script.py中,我们需要这样做import package.lib.当软件包安装在site-packages中时,script.py可以找到package.lib.
但是,当从用户目录工作时,还需要做其他事情.我的解决方案是将我的PYTHONPATH设置为包含"〜/ Project".另一位开发人员希望将这行代码放在script.py的开头:
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
Run Code Online (Sandbox Code Playgroud)
这样Python就可以找到本地副本了package.lib.
我认为这是一个坏主意,因为这行只对开发人员或从本地副本运行的人有用,但我不能说明为什么这是一个坏主意.
我们应该使用PYTOHNPATH,sys.path,还是要么?
与文件夹结构
lib/
abcd/
__init.py__
lib.py
app.py
Run Code Online (Sandbox Code Playgroud)
代码
from lib.abcd import lib
Run Code Online (Sandbox Code Playgroud)
作品。但是具有以下文件结构:
bin/
app.py
lib/
abcd/
__init.py__
lib.py
Run Code Online (Sandbox Code Playgroud)
代码
from ..lib.abcd import lib
Run Code Online (Sandbox Code Playgroud)
给出导入错误。
import当库位于当前文件夹的同级文件中时,如何正确执行操作?(或同级文件夹的子文件夹)
我知道可能会有一些涉及添加lib/到PATH的黑客,但是是否有一个优雅的Pythonic解决方案?
如果不是,是否有真正的内部原因阻止用户以简单方式执行此简单导入?
我正在像这样点子安装我的模块:
cd my_working_dir
pip install -e .
Run Code Online (Sandbox Code Playgroud)
当我以后从Python导入模块时,是否可以某种方式检测模块是否以这种可编辑模式安装?
现在,我只是检查是否有一个.git文件夹os.path.dirname(mymodule.__file__)),只有在其中确实有一个.git文件夹时,它才起作用。有没有更可靠的方法?