我有一个克隆到myproject
的Git存储库,该存储库的根目录中有一个__init__.py
,使整个东西成为可导入的Python包。
我正在尝试为该软件包编写setuptools setup.py
,它也将位于存储库的根目录中,在__init__.py
文件旁边。我希望setup.py
将其作为软件包安装在目录中。如果setup.py本身作为安装的一部分出现,那很好,但是如果没有,那会更好。理想情况下,它也应该在可编辑模式下(pip install -e .
)
是否完全支持此配置?我可以通过在package_dir= {"": ".."},
上使用setup()
参数,让它在当前目录上方的目录中查找myproject
来使其工作。但是,这要求必须始终从名为myproject
的目录安装该软件包,例如,通过pip
安装该软件包,或者有人正在使用名为,或在许多其他情况下。
我正在考虑的另一种技巧是在存储库中以符号链接到myproject-dev
的符号。那应该行得通,但是我想先检查一下是否有更好的方法。
参考方案
另见Create editable package setup.py in the same root folder as __init__.py
据我所知这应该工作:
myproject-dev/
├── __init__.py
├── setup.py
└── submodule
└── __init__.py
#!/usr/bin/env python3
import setuptools
setuptools.setup(
name='MyProject',
version='0.0.0.dev0',
packages=['myproject', 'myproject.submodule'],
package_dir={
'myproject': '.',
},
)
更新资料
使此工作可编辑或开发的一种方法是手动修改easy-install.pth
文件。
假设:
该项目位于:/home/user/workspace/empty/project
;
使用虚拟环境.venv
;
使用python3 -m pip install -e .
或python3 setup.py develop
安装项目;
Python版本是3.6。
然后:
在/home/user/workspace/empty/project/.venv/lib/python3.6/site-packages/easy-install.pth
之类的位置找到文件;
其内容是:/home/user/workspace/empty/project
。
为了使导入按预期工作,可以编辑此行以读取以下内容:
/home/user/workspace/empty
注意:
然后,很容易将/home/user/workspace/empty
中看起来像Python软件包的所有内容导入,这就是为什么最好将项目放置在其自己的目录中的原因,在这种情况下,目录empty
除了目录。
模块project
也是可导入的。
我想使用Python 2和3版本。我已经读过有关conda环境的用法,但是不断向终端source (de)activate py27写入内容似乎不方便。如picture所示,如何使用命令选择内核版本? 参考方案 您在该图像中寻找的是Jupyter Notebook。您需要使用Jupyter和所需的python版本创建环境:conda create -n py…
如何在“后台”中运行脚本的一部分(单个函数)? - python我在具有以下基本结构(伪代码)的服务器上运行python脚本:for data_item in data_items: processed_result=process_data(data_item); #this takes time T0 upload_result_to_site(processed_result) #this takes time T…
为什么在Python中根据@staticmethod选择模块级别的函数(根据Google样式指南)? - python根据《 Google Python样式指南》,绝对不应(几乎)使用静态方法: 除非为了与 在现有库中定义的API。编写模块级功能 代替该建议背后的原因是什么?这是否仅适用于Google?还是在Python中使用静态方法还有其他(更一般的)缺点?尤其是,如果我想在将由该类的其他公共成员函数调用的类中实现实用程序功能,则最佳实践是什么?class Foo: ..…
mkvirtualenv命令是什么意思?是Linux命令还是python命令..? [关闭] - pythonClosed. This question is off-topic。它当前不接受答案。 …
如何访问页面内的第三方跟踪参数(通过Python)? - python我已经搜索了很多,到目前为止,还无法确定如何访问页面中的第三方跟踪参数。使用下面的代码,我可以通过python request软件包访问页面的cookie,但是仅对于本地域,不会返回任何第三方的cookie /域:import requests # create session s = requests.session() # read data from …