从任何子模块或通过交互式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)中, 我们在此声明:

^{pr2}$

对于我们想交互运行的每个模块(测试_食品),我们在顶部添加以下行:

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要求您向项目文件夹提供完整的{}。如果project已经初始化('implemented'),则仅当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_内容相同,但直接用于手头的项目。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java访问私有字段而不使用getter方法?   使用PowerMockito在JavaEWSAPI中模拟测试拉订阅   启动活动时未保存java首选项并清除变量   java如何在servlet中检索子域?斯普林有帮手吗   java使用Docker从命令行构建Android项目   java Android,ActionBar后退按钮(setDisplayHomeAsUpEnabled(true))重新创建父活动   java在重用FileOutputStream时应该关闭流吗?   java使用RESTAPI将文件上载到s3 bucket   Java SOAP Web服务应用程序中的mysql用户登录方法不工作   java使用多个数字计算百分比并转换为长   java Android SQLiteDatabase查询忽略空格   java如何在Javafx中比较两个字段文本   java错误:未设置java_HOME,在Eclipse安装后找不到   java在安卓中保存对象   java如何使用jaxws从返回List<Object>的服务中检索值   java Google OAuth2 JWT令牌验证异常   SpringMVC中的JavaUTF8编码问题,当从JSP表单发送POST请求中的越南语信件时   java从webview重定向到安卓应用程序   JUnit 5中多个扩展的java顺序