小编Jac*_*ing的帖子

使用setup.py和软件包共享软件包版本的正确方法是什么?

使用distutils,setuptools等,包版本指定在setup.py:

# file: setup.py
...
setup(
name='foobar',
version='1.0.0',
# other attributes
)
Run Code Online (Sandbox Code Playgroud)

我希望能够从包中访问相同的版本号:

>>> import foobar
>>> foobar.__version__
'1.0.0'
Run Code Online (Sandbox Code Playgroud)

我可以添加__version__ = '1.0.0'到我的包的__init__.py,但我还想在我的包中包含其他导入以创建包的简化接口:

# file: __init__.py

from foobar import foo
from foobar.bar import Bar

__version__ = '1.0.0'
Run Code Online (Sandbox Code Playgroud)

# file: setup.py

from foobar import __version__
...
setup(
name='foobar',
version=__version__,
# other attributes
)
Run Code Online (Sandbox Code Playgroud)

但是,foobar如果导入其他尚未安装的软件包,这些额外的导入可能会导致安装失败.使用setup.py和软件包共享软件包版本的正确方法是什么?

python distutils setuptools

62
推荐指数
4
解决办法
1万
查看次数

如何在Python中获取计算机的完全限定域名?

我知道我可以使用platform.node()来获取我的计算机的网络名称:

>>> import platform
>>> platform.node()
'MyComputerName'
Run Code Online (Sandbox Code Playgroud)

但我真正想要的是类似于以下内容:

>>> get_full_network_domain_name()
'MyComputerName.it.na.mycompany.com'
Run Code Online (Sandbox Code Playgroud)

这样的事情存在吗?

python subdomain dns networking

41
推荐指数
1
解决办法
3万
查看次数

是否存在区分Python集成测试和单元测试的约定?

使用单元测试构建Python包的最常用方法如下:

package/
    __init__.py
    module_1.py
    module_2.py
    module_n.py
    test/
        __init__.py
        test_module_1.py
        test_module_2.py
        test_module_n.py
Run Code Online (Sandbox Code Playgroud)

我想区分单元测试(方法和功能)和集成测试(使用整个包并可能涉及其他资源).也许这些测试应该在不同的包中,具有不同的文件名,和/或包括某些文档字符串注释.

这样做是否有标准惯例?

python integration-testing unit-testing

35
推荐指数
2
解决办法
3721
查看次数

如何确定Python脚本是否通过命令行运行?

背景

我希望我的Python脚本在退出之前暂停使用类似于:

raw_input("Press enter to close.")

但仅当它不是通过命令行运行时.命令行程序不应该以这种方式运行.

有没有办法确定我的Python脚本是否是从命令行调用的:

$ python myscript.py

双击myscript.py打开它与操作系统中的默认解释器?

python command-line

24
推荐指数
4
解决办法
2万
查看次数

如何在运行时跳过整个Python unittest模块?

我想我的Python unittest模块告诉测试运行器在某些情况下跳过它的全部(例如无法导入模块或找到关键资源).

我可以使用@unittest.skipIf(...)跳过unittest.TestCase类,但是如何跳过整个模块?将跳过应用于每个类是不够的,因为如果模块无法导入,类定义本身可能会导致异常.

python unit-testing

23
推荐指数
4
解决办法
2万
查看次数

如何在pylint-1.0.0之后显示Pylint消息ID?

与启动pylint-1.0.0--include-ids不再允许争论.

如何得到:

************* Module foo.bar
E:199,11: Module 'yaml' has no 'scanner' member (no-member)
************* Module foo.baz
W:153,27: Unused variable '_filenames' (unused-variable)
Run Code Online (Sandbox Code Playgroud)

为每个警告显示ID(例如W0142)?

pylint

23
推荐指数
1
解决办法
4442
查看次数

如何在tkinter中设置最小窗口大小?

我的理解是,在初始化方法中的所有框架和小部件之后__init__,tkinter窗口会调整大小以适应所有这些组件.

我想将窗口的初始化大小设置为其最小大小.我希望能够最大化并扩大窗口的大小,但我从不希望窗口足够小以开始隐藏窗口小部件.

我该如何做到这一点?

tkinter

22
推荐指数
2
解决办法
3万
查看次数

如何使用pip从Bitbucket安装软件包?

我正在制作一个需要指向我的存储库的setup.py.

与github我可以这样做:

dependency_links=['https://github.com/nathanborror/django-registration/tarball/master#egg=django-registration']
Run Code Online (Sandbox Code Playgroud)

我怎么能用bitbucket项目做同样的事情?

例如这个网址:

https://bitbucket.org/abraneo/django-registration
Run Code Online (Sandbox Code Playgroud)

谢谢.

python pip bitbucket

21
推荐指数
2
解决办法
1万
查看次数

如何从Python格式字符串中提取关键字?

我想在API中提供自动字符串格式,以便:

my_api("path/to/{self.category}/{self.name}", ...)
Run Code Online (Sandbox Code Playgroud)

可以用格式化字符串中调出的属性值替换.


如何从Python格式字符串中提取关键字参数:

"non-keyword {keyword1} {{escaped brackets}} {} {keyword2}" => 'keyword1', 'keyword2'
Run Code Online (Sandbox Code Playgroud)

python string string-formatting

17
推荐指数
2
解决办法
5143
查看次数

是否有Python模块注释的约定?

我的理解是,模块文档字符串应该只提供模块所做的一般描述,而作者和版本等细节只应包含在模块的注释中.

但是,我在评论文档字符串中看到了以下内容:

__author__ = "..."
__version__ = "..."
__date__ = "..."
Run Code Online (Sandbox Code Playgroud)

放置这些物品的正确位置在哪里?__[name]__在模块顶部列出的其他常见变量是什么?

python comments module conventions

16
推荐指数
2
解决办法
4611
查看次数