从任何子模块或通过交互式shell/IDLE设置(Windows)python项目的路径依赖关系。
prj的Python项目详细描述
prj-0.3.1
从任何子模块或通过交互式shell/IDLE设置python项目的路径依赖关系。 目前仅适用于Windows平台+python>;=3.4。在
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 注意:名称prj来自缩短“project” ........................................................................................................ 在
假设您有一个名为MYPROJECT的项目,具有文件结构
MYPROJECT/
myproject/
test/
test_foo.py
__init__.py
foo.py
readme.txt
MY_EXTERNAL_LIBRARY/
a_package/
__init__.py
如果我们想进行测试_食品(进口我的项目.foo),
我们打开MYPROJECT文件夹中的cmd并输入python -m myproject.test.test_foo"
但是假设我们正在积极地编辑测试_食品在一个python空闲并且希望 通过空闲运行它。如果我们用pydev表示空闲,这很容易实现, 其中,我们将MYPROJECT设置为源文件夹。在
不过,对于那些使用python标准IDLE的用户来说并不容易。我们得加一行
sys.path.insert(0,__file__+'/../../..')
对我们想运行的每个模块都这样做(仔细计算双点的数量)。 但是如果我们移动文件呢?再换一次。在
使用prj,我们可以创建一个名为^{em1}的文件$prj.yaml公司在MYPROJECT文件夹(MYPROJECT/prj.yaml
)中,
我们在此声明:
对于我们想交互运行的每个模块(测试_食品),我们在顶部添加以下行:
import prj
P = prj.qs(__file__)
返回项目对象,并将MYPROJECT文件夹的完整路径插入到系统路径(索引0)。在
prj.qs
从提供给文件夹的路径搜索到该文件夹的父文件夹,
到父文件夹的父文件夹,依此类推;直到它找到prj.yaml公司文件。
因此,我们可以在项目的任何.py文件中使用__file__
变量。在
也可以通过cmd中的python交互模式设置项目(打开cmd并输入“python”):
>>>import prj
>>>P = prj.setup(full_path_to_MYPROJECT_directory)
>>>import myproject.test.test_foo as test_foo
>>>test_foo.test_this_function()
关于prj.yaml公司在
可接受以下参数:
name: MYPROJECT
author: binares
version: 0.1.0
#--Source directories--
#These must be relative paths to $PRJPATH (i.e. $PRJPATH\..\ is not allowed)
srcDirs:
- $PRJPATH
- $PRJPATH\myproject\test
#The $PRJPATH variable can be omitted:
#srcDirs:
# - .
# - myproject\test
#If srcDirs is left undeclared (or srcDirs: null), then it will be replaced with ["$PRJPATH"].
#srcDirs: null -> srcDirs: ["$PRJPATH"]
#To leavy it empty declare it as empty list
#srcDirs: []
#--External libraries--
extLibs:
- $PRJPATH\..\MY_EXTERNAL_LIBRARY
#--Data directories--
data: E:\PROJECTDATA\$PRJNAME
myData: E:\MY_SECRET_PASSWORDS
#--Path variables--
#The path variables start with $
#Accepted variables:
# $PRJPATH = $PPATH - full_path_to_MYPROJECT_directory
# $PRJDIRNAME - the directory name in which prj.yaml is located
# $PRJNAME - the name parameter (if no name provided then $PRJDIRNAME is used)
# $DRIVE - searches through all logical drives for the trailing path
# (e.g. $DRIVE:\SOME_FOLDER); returns first found
#Variables can be combined too:
# $DRIVE:\$PRJNAME
#They are replaced when Project object is initiated:
#E:\PROJECTDATA\$PRJNAME -> E:\PROJECTDATA\MYPROJECT
启动的项目对象现在包含以下属性值:
P.ppath = path_to_MYPROJECT
P.dpath = "E:\\PROJECTDATA\\MYPROJECT"
P.mdpath = "E:\\MY_SECRET_PASSWORDS"
P.srcDirs = [path_to_MYPROJECT, path_to_MYPROJECT\myproject\test]
P.extLibs = [path_to_MY_EXTERNAL_LIBRARIES]
P.name = "MYPROJECT"
P.author = "binares"
P.version = "0.1.0"
项目启动后系统路径看起来像这样:
[*srcDirs from first to last, *extLibs from first to last, *the old sys.path[1:]]
注意:实际上,文件可以留空,在这种情况下,将分配属性:
P.ppath = path_to_MYPROJECT
P.srcDirs = [path_to_MYPROJECT]
P.name = "MYPROJECT"
sys.path = [path_to_MYPROJECT, *the old sys.path[1:]]
功能
prj.qs(_file_, ins_to='sys.path', build='if_not_implemented', replace_null_srcDirs=['$PRJPATH'])
prj.setup(path, procedure='from_defaults', astype='$PPATH', ins_to='sys.path', build=True, parent_prj=None, replace_null_srcDirs=['$PRJPATH']):
两者都启动了一个项目。prj.qs
搜索prj.yaml公司在_file_
的父目录中的上游文件。prj.setup
要求您向项目文件夹提供完整的{build
设置为True
时,才返回已启动的项目并生成路径(将它们插入ins_to
)。在
第一次调用qs/setup时,搜索路径[0](运行python文件的目录)被删除。要防止这种情况发生,请在调用qs/setup之前调用prj.set_delete_sys_path_index(None)
。如果已将自定义路径插入到,则还必须设置自定义索引系统路径在调用qs/setup之前;在这种情况下,将索引设置为the_number_of_custom_paths_inserted
或{
prj.set_delete_sys_path_index(value)
上面解释过了。示例:
import prj,sys
sys.path.insert(0,'C:\my_external_python_library')
prj.set_delete_sys_path_index(1)
P = prj.qs(__file__)
prj.get_prj(name=None, path=None)
按名称或路径检索启动的项目对象(所有启动的项目都存储在内存中)。如果提供了path
,则首先尝试通过path
进行检索。在
prj.zip_contents(path,destination=None,compression='ZIP_DEFLATED', include_pycache=False, exists='error')
用法:prj.zip_contents("C:\\MYPROJECT")
-创建zip文件C:\我的项目.zip
包含C:\MYPROJECT内容。可以是任何目录(不仅仅是那些包含prj.yaml公司). 在
prj.Project.archive(self, package=None, destination='$PRJPATH\\..\\_backup', compression='ZIP_DEFLATED', include_pycache=False, exists='rename')
与zip_内容相同,但直接用于手头的项目。在
- 项目
标签: