作为一个主要的Windows开发人员,也许我在Linux社区中遗漏了一些文化,但它总是让我感到困惑.
下载文件首先放入.tar存档的内容然后压缩.为什么两步过程?压缩不实现文件分组吗?还有其他一些我不知道的好处吗?
在Python脚本中检查包是否安装的好方法是什么?我知道解释器很容易,但是我需要在脚本中完成它.
我想我可以检查系统中是否有安装过程中创建的目录,但我觉得有更好的方法.我正在尝试确保安装了Skype4Py软件包,如果没有,我会安装它.
我完成检查的想法
是否有直接的方法列出包中所有模块的名称,而不使用__all__?
例如,给定此包:
/testpkg
/testpkg/__init__.py
/testpkg/modulea.py
/testpkg/moduleb.py
Run Code Online (Sandbox Code Playgroud)
我想知道是否有标准或内置方式来做这样的事情:
>>> package_contents("testpkg")
['modulea', 'moduleb']
Run Code Online (Sandbox Code Playgroud)
手动方法是遍历模块搜索路径以查找包的目录.然后可以列出该目录中的所有文件,过滤掉唯一命名的py/pyc/pyo文件,剥离扩展名,然后返回该列表.但对于模块导入机制已在内部进行的操作,这似乎是相当多的工作.该功能是否暴露在任何地方
python解释器具有-m 模块选项"将库模块模块作为脚本运行".
使用此python代码a.py:
if __name__ == "__main__":
print __package__
print __name__
Run Code Online (Sandbox Code Playgroud)
我测试python -m a得到了
"" <-- Empty String
__main__
Run Code Online (Sandbox Code Playgroud)
而python a.py回报
None <-- None
__main__
Run Code Online (Sandbox Code Playgroud)
对我来说,这两个调用似乎是相同的,除非__package__在使用-m选项调用时不是None.
有趣的是,python -m runpy a我得到了与python -m a编译的python模块相同的a.pyc.
这些调用之间的(实际)区别是什么?他们之间有什么利弊?
此外,David Beazley的Python Essential Reference将其解释为"-m选项将库模块作为脚本运行,该脚本在执行主脚本之前在__main__模块内执行".这是什么意思?
来自Node我曾经安装特定版本的供应商lib的环境到项目文件夹(node_modules),告诉从控制台npm安装该版本的lib,package.json甚至直接从控制台安装,如下所示:
$ npm install express@4.0.0
Run Code Online (Sandbox Code Playgroud)
然后我习惯在我的项目中导入该包的那个版本:
var express = require('express');
Run Code Online (Sandbox Code Playgroud)
现在,我想做同样的事情go.我怎样才能做到这一点?是否可以安装特定版本的软件包?如果是这样,使用集中式$GOPATH,如何导入一个版本而不是另一个版本?
我会做这样的事情:
$ go get github.com/wilk/uuid@0.0.1
$ go get github.com/wilk/uuid@0.0.2
Run Code Online (Sandbox Code Playgroud)
但是,在导入过程中如何才能有所作为呢?
我正在研究django中的模型系统是如何工作的,我发现了一些我不理解的东西.
我知道你创建一个空__init__.py文件来指定当前目录是一个包.并且您可以设置一些变量,__init__.py以便导入*正常工作.
但是django添加了一堆来自... import ...语句并定义了一堆类__init__.py.为什么?这不是让事情看起来凌乱吗?是否有需要此代码的原因__init__.py?
我在导入外部项目时遇到问题.我将文件 - >导入... - >现有项目导入工作区,选择项目所在的文件夹并导入所有内容 - 但项目的软件包名称似乎不是Eclipse所期望的.包名都有前缀:
prefix.packagename1
prefix.packagename2
Run Code Online (Sandbox Code Playgroud)
等等
但Eclipse期望
src.prefix1.prefix.packagename1
src.prefix1.prefix.packagename2
Run Code Online (Sandbox Code Playgroud)
因为目录是src/prefix1/prefix/package1
我真的不想乱用外部代码.如何告诉Eclipse忽略目录"src/prefix1"?或者我还能做什么?
当我从git repo安装"pip install -e ..."时,我必须指定#egg = somename或pip complains.例如:
pip install -e git://github.com/hiidef/oauth2app.git#egg=oauth2app
Run Code Online (Sandbox Code Playgroud)
这个"蛋"字符串有什么意义?
你能告诉我如何读取Python包中的文件?
我加载的包有许多我想从程序中加载的模板(用作字符串的文本文件).但是如何指定此类文件的路径?
想象一下,我想从以下位置读取文件:
package\templates\temp_file
Run Code Online (Sandbox Code Playgroud)
某种路径操纵?包基路径跟踪?