重新打包,调用任何目录中的未注册包(使用相对调用)。由移入子目录的模块使用,或用于准备导入未注册的包(在任何相对路径中)。
repackage的Python项目详细描述
包装:重新包装
=====
2013年3月/6月-2018麻省理工学院许可证。
<;!--要更新,请运行以下命令:markdown toc-i readme.md-->;
<;!--
>
-[目的](目的)
-[安装](安装)
-[问题](问题)
-[解决方案](解决方案)
-[用法](用法)
-[使用系统路径导入模块(导入a模块-使用系统-使用系统-使用系统-路径)
-[限制]
-[限制]
-[限制]
-[问题][问题]
-[问题](问题)
-[问题]
-[问题]
-[问题]
-[解决方案]
-[解决方案]
-[用法]
-[用法]
-[用法]
>>/>&书信电报;!--停止-->;
purpose
----
此模块允许任何python程序以可靠的方式调用未注册的包。使用此模块,您可以调用"非官方"
存储库,包括具有相对路径的存储库。
>;**警告:**对于python导入([pep
328](<;https://www.python.org/dev/peps/pep-0328/相对导入的基本原理>;)而言,此表单是相对路径系统的替代方案。。它允许额外的灵活性,代价是打破某些
假设。*
install
----
如果您使用pip::
pip install repackage
否则,请下载包并键入:
``bash
python setup.py install
````
在python中,已注册的包在import
指令中按名称调用,而较低的目录在任何情况下都可以被视为
包。
acent目录?b)如何
轻松地将python文件移动到子目录中,而不会弄乱
import语句?
相对进口存在复杂问题(见PEP366)。这里的基本思想是将包的源目录添加到lib
路径(感谢对sys.path.append的调用)。
通常推荐的两种确定路径的方法是:a.from current
directory或b.from\\\\\\\\\\\\\\\\\\\\.
这两种方法都有一个缺陷:
-第一种方法不考虑进行导入的文件,因此如果项目使用的路径超过一个
目录。
-第二个目录不允许将这些操作委托给处理这些问题的模块(因为"文件"现在将指向"模块",而不是调用方)。
mpe策略可能在一个很好的
情况范围内工作:它检查堆栈以确定哪个文件是
调用方,并从中计算出相对路径。唯一微妙的
部分是计算出这是多少步,但是
答案应该是不变的,可以通过推理计算,也可以通过试错计算(在本例中为3)。
用法
----
情况1)将文件移动到下一个控制器y.在要调用的模块
中,只需在导入
之前使用以下语句::
import repackage
repackage.up()
tories up,write::
repackage.up(2)
situation 2)在其他地方调用未注册的目录(绝对路径或相对路径)::
repackage.add("../../otherdir")
显然,repackage.up()等同于repackage.add("…")。我更喜欢第一个,因为它更简洁,语法更健壮。
/路径/foo.py`)。
这允许我们执行它,不管它安装在哪里。
python包背后的思想或多或少是相同的。
>;但是如果
模块是**而不是**包的一部分呢?利用操作系统的路径导入它不是很直观吗?
**这是可能的。**假设"foo"位于路径中,作为指向
"my/path/foo.py"的符号链接,则可以编写:
``python
``repackage.add_path("foo")
import foo
````
repackage将沿着符号链接一直指向目标
,并将正确的目录添加到libpath。不用看,如果没有符号链接,它也可以工作(注意,在这种情况下,路径中的文件可能被称为"foo.py")
sys.path.append的re)。
这个模块已经可靠地工作了一段时间,所以它是一个beta版本。
到目前为止,该方法看起来很健壮,但并不是所有的输入和输出都已被研究过。一种预防措施可能是确保重新打包始终指向包的同一源目录(而不是指向同一包的子目录),从而避免lib
路径中可能存在的歧义。(如果这真的是个问题,可以随时检查并发出警告?).
=====
2013年3月/6月-2018麻省理工学院许可证。
<;!--要更新,请运行以下命令:markdown toc-i readme.md-->;
<;!--
>
-[目的](目的)
-[安装](安装)
-[问题](问题)
-[解决方案](解决方案)
-[用法](用法)
-[使用系统路径导入模块(导入a模块-使用系统-使用系统-使用系统-路径)
-[限制]
-[限制]
-[限制]
-[问题][问题]
-[问题](问题)
-[问题]
-[问题]
-[问题]
-[解决方案]
-[解决方案]
-[用法]
-[用法]
-[用法]
>>/>&书信电报;!--停止-->;
purpose
----
此模块允许任何python程序以可靠的方式调用未注册的包。使用此模块,您可以调用"非官方"
存储库,包括具有相对路径的存储库。
>;**警告:**对于python导入([pep
328](<;https://www.python.org/dev/peps/pep-0328/相对导入的基本原理>;)而言,此表单是相对路径系统的替代方案。。它允许额外的灵活性,代价是打破某些
假设。*
install
----
如果您使用pip::
pip install repackage
否则,请下载包并键入:
``bash
python setup.py install
````
在python中,已注册的包在import
指令中按名称调用,而较低的目录在任何情况下都可以被视为
包。
acent目录?b)如何
轻松地将python文件移动到子目录中,而不会弄乱
import语句?
相对进口存在复杂问题(见PEP366)。这里的基本思想是将包的源目录添加到lib
路径(感谢对sys.path.append的调用)。
通常推荐的两种确定路径的方法是:a.from current
directory或b.from\\\\\\\\\\\\\\\\\\\\.
这两种方法都有一个缺陷:
-第一种方法不考虑进行导入的文件,因此如果项目使用的路径超过一个
目录。
-第二个目录不允许将这些操作委托给处理这些问题的模块(因为"文件"现在将指向"模块",而不是调用方)。
mpe策略可能在一个很好的
情况范围内工作:它检查堆栈以确定哪个文件是
调用方,并从中计算出相对路径。唯一微妙的
部分是计算出这是多少步,但是
答案应该是不变的,可以通过推理计算,也可以通过试错计算(在本例中为3)。
用法
----
情况1)将文件移动到下一个控制器y.在要调用的模块
中,只需在导入
之前使用以下语句::
import repackage
repackage.up()
tories up,write::
repackage.up(2)
situation 2)在其他地方调用未注册的目录(绝对路径或相对路径)::
repackage.add("../../otherdir")
显然,repackage.up()等同于repackage.add("…")。我更喜欢第一个,因为它更简洁,语法更健壮。
/路径/foo.py`)。
这允许我们执行它,不管它安装在哪里。
python包背后的思想或多或少是相同的。
>;但是如果
模块是**而不是**包的一部分呢?利用操作系统的路径导入它不是很直观吗?
**这是可能的。**假设"foo"位于路径中,作为指向
"my/path/foo.py"的符号链接,则可以编写:
``python
``repackage.add_path("foo")
import foo
````
repackage将沿着符号链接一直指向目标
,并将正确的目录添加到libpath。不用看,如果没有符号链接,它也可以工作(注意,在这种情况下,路径中的文件可能被称为"foo.py")
sys.path.append的re)。
这个模块已经可靠地工作了一段时间,所以它是一个beta版本。
到目前为止,该方法看起来很健壮,但并不是所有的输入和输出都已被研究过。一种预防措施可能是确保重新打包始终指向包的同一源目录(而不是指向同一包的子目录),从而避免lib
路径中可能存在的歧义。(如果这真的是个问题,可以随时检查并发出警告?).