什么是__init__.py一个Python源目录?
我越来越多地使用Python,并且我一直__all__在不同的__init__.py文件中看到变量集.有人可以解释这是做什么的吗?
如何在Python中导入其他文件?
import file.py?例如,main.py我有:
from extra import * 
虽然这给了我所有的定义extra.py,但也许我想要的只是一个定义:
def gap():
    print
    print
我怎么添加到import语句只得到gap从extra.py?
我一直在为工作中的简单任务制作Python脚本,从来没有真正打扰包装它们以供其他人使用.现在我被分配为REST API创建一个Python包装器.我完全不知道如何开始,我需要帮助.
是)我有的:
(只是想尽可能具体)我已经准备好了virtualenv,它也在github中,python的.gitignore文件也是,还有用于与REST API交互的请求库.而已.
这是当前目录树
.
??? bin
?   ??? /the usual stuff/
??? include
?   ??? /the usual stuff/
??? lib
?   ??? python2.7
?       ??? /the usual stuff/
??? local
?   ??? /the usual stuff/
??? README.md
27 directories, 280 files
我甚至不知道把.py文件放到哪里,如果我做的话.
我想做什么:
使用"pip install ..."安装python模块
如果可能的话,我想要编写Python模块的一般步骤.
我刚刚设置为使用python与Python 2.6.到目前为止,除了处理"导入"语句之外,它运行良好:我似乎无法以与我的程序相同的方式响应导入.
我的目录结构如下:
src/
    main.py
    util.py
    test/
        test_util.py
    geom/
        vector.py
        region.py
        test/
            test_vector.py
            test_region.py
要运行,我python main.py从src/调用.
在main.py中,我导入了vector和region
from geom.region import Region
from geom.vector import Vector
在vector.py中,我导入了区域
from geom.region import Region
当我在标准运行中运行代码时,这些都可以正常工作.但是,当我从src /调用"py.test"时,它会一直退出导入错误.
我的第一个问题是,当运行"test/test_foo.py"时,py.test无法直接"导入foo.py".我通过使用"imp"工具解决了这个问题.在"test_util.py"中:
import imp
util = imp.load_source("util", "util.py")
这适用于许多文件.它似乎也暗示当pytest运行"path/test/test_foo.py"来测试"path/foo.py"时,它基于目录"path".
但是,"test_vector.py"失败了.Pytest可以找到并导入vector模块,但它无法找到任何vector的进口.使用pytest时,以下导入(来自"vector.py")都会失败:
from geom.region import *
from region import *
这些都给出了表格的错误
ImportError: No module named [geom.region / region]
我不知道接下来要做什么来解决这个问题; 我对Python中导入的理解是有限的.
使用pytest时处理导入的正确方法是什么?
在vector.py,我更改了import语句
from geom.region import Region
简单地说
from region …我使用Java,我们只有包.我知道还有其他编程语言也包含模块.
有什么不同?
谢谢
我搜索过,这似乎是一个简单的问题而没有一个简单的答案.
我有a/b/c.py要调用的文件python -m a.b.c.我想获得a.b.c模块级别的值.
USAGE = u'''\
Usage:
    python -m %s -h
''' % (what_do_i_put_here,)
因此,当我收到-h选项时,我会显示USAGE而不需要在每个脚本中实际记下实际值.
我真的需要通过inspect才能获得所需的价值吗?
谢谢.
编辑:如上所述,有答案(我已经搜索过),但不是简单的答案.使用inspect,使用traceback或操作__file__,__package__并做一些子串来得到答案.但没有什么比我在模块中有一个类的简单,我可以使用myClass.__module__,我会得到我想要的答案.__name__(不幸的是)使用是无用的,因为它总是如此__main__.
此外,这是在python 2.6中,我不能使用任何其他版本.
我已经开始使用sckikit-learn来完成我的工作.所以我正在阅读教程,该教程给出了加载一些数据集的标准过程:
$ python
>>> from sklearn import datasets
>>> iris = datasets.load_iris()
>>> digits = datasets.load_digits()
但是,为方便起见,我尝试按以下方式加载数据:
In [1]: import sklearn
In [2]: iris = sklearn.datasets.load_iris()
但是,这会引发以下错误:
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-2-db77d2036db5> in <module>()
----> 1 iris = sklearn.datasets.load_iris()
AttributeError: 'module' object has no attribute 'datasets'
但是,如果我使用明显相似的方法:
In [3]: from sklearn import datasets
In [4]: iris = datasets.load_iris()
它没有问题.实际上以下也有效:
In [5]: iris = sklearn.datasets.load_iris()
我对此完全感到困惑.我错过了一些非常微不足道的事情吗?这两种方法有什么区别?
我写了一个小模块,我想知道包装它的基本步骤是什么,以便将其发送到pypi:
python ×9
module ×3
package ×2
comparison ×1
distutils ×1
import ×1
java ×1
namespaces ×1
packaging ×1
pypi ×1
pytest ×1
python-2.6 ×1
python-2.7 ×1
python-3.x ×1
scikit-learn ×1
syntax ×1