标签: python-module

为什么导入python模块不导入嵌套模块?

如果我这样做:

import lxml 
Run Code Online (Sandbox Code Playgroud)

在python中,lxml.html不导入.例如,我无法调用该lxml.html.parse()函数.为什么会这样?

python python-module

12
推荐指数
2
解决办法
4617
查看次数

Python:确定实际的当前模块(不是__main__)

我正在尝试确定函数的实际当前模块(如果从其他地方导入,则会看到),即使当前模块是" 顶级脚本环境 " __main__.

这可能听起来像一个奇怪的事情,但背景是我需要序列化一个函数并在不同的机器上反序列化它(包括参数),为此我需要确保__main__在反序列化之前导入正确的模块AND NOT (否则我得到一个错误说AttributeError: 'module' object has no attribute my_fun).

到目前为止,我已经尝试过检查:

import inspect
print inspect.getmodule(my_fun)
Run Code Online (Sandbox Code Playgroud)

这给了我

<module '__main__' from 'example.py'>
Run Code Online (Sandbox Code Playgroud)

当然.我也试过找一些有用的东西globals(),没有运气.

我真正想要的是<module 'example' from 'example.py'>.我想一个hacky方法是使用类似的东西从文件名解析它

m_name = __main__.__file__.split("/")[-1].replace(".pyc","")
Run Code Online (Sandbox Code Playgroud)

然后按名称查找模块sys.modules[m_name].

有更干净/更好的方法吗?

编辑:在了解了ipython的"FakeModule"以及更多谷歌搜索后,我发现了这篇文章,它正好描述了我面临的问题,包括我当前的解决方案(明确导入当前模块import current_module并序列化current_module.my_fun而不是my_fun).我试图避免这种情况,因为对我的软件包的用户来说可能不太直观.

python python-module inspection

12
推荐指数
3
解决办法
3023
查看次数

Sphinx文档模块属性

我有一个应该有的模块@property,我通过将类设置为模块来解决这个问题.我从这个答案中得到了一个想法:懒惰的模块变量 - 可以做到吗?

我希望这个可重复且易于使用,所以我为它制作了一个元类.这就像一个魅力.

问题是,当使用Sphinx生成文档属性时,请不要记录.其他所有内容都按预期记录.我不知道如何解决这个问题,也许这是Sphinx的一个问题?

模块:

import sys
import types

class ClassAsModule(type):
    def __new__(cls, name, bases, attrs):
        # Make sure the name of the class is the module name.
        name = attrs.pop('__module__')
        # Create a class.
        cls = type.__new__(cls, name, bases, attrs)
        # Instantiate the class and register it.
        sys.modules[name] = cls = cls(name)
        # Update the dict so dir works properly
        cls.__dict__.update(attrs)

class TestClass(types.ModuleType):
    """TestClass docstring."""
    __metaclass__ = ClassAsModule
    @property
    def some_property(self):
        """Property docstring."""
        pass
    def …
Run Code Online (Sandbox Code Playgroud)

python properties metaclass python-module python-sphinx

11
推荐指数
1
解决办法
3149
查看次数

Python:模块和打包 - 为什么在__main__.py之前没有执行__init__.py文件?

我有一个完全包含在具有以下结构的目录中的python程序:

myprog/
??? __init__.py
??? __main__.py
??? moduleone.py
??? moduletwo.py
Run Code Online (Sandbox Code Playgroud)

我希望能够打包并分发它,以便其他开发人员可以做pip install -e /path/to/git/clone/of/myprog,然后可以在他自己的程序中导入myprog并用它做很酷的事情.

我还希望能够在命令行运行myprog,如下所示:

PROMPT> python myprog
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我希望python能够执行__main__.py它所执行的模块.但是,此模块引用了一些声明的函数,这些函数__init__.py在程序在命令行运行时以及由另一个程序导入时都需要可用.但是,我收到以下错误:

NameError: name 'function_you_referenced_from_init_file' is not defined
Run Code Online (Sandbox Code Playgroud)

我必须以__main__.py某种方式导入这些功能吗?

我尝试了一个简单的例子如下:

PROMPT> cat myprog/__init__.py
def init_myprog():
    print 'running __init__.init_myprog()'

PROMPT> cat myprog/__main__.py
import myprog
print 'hi from __main__.py'
myprog.init_myprog()

PROMPT> ls -l myprog
total 16
-rw-r--r--  1 iit    63B Aug 30 11:40 __init__.py
-rw-r--r--  1 iit    64B Aug 30 12:11 __main__.py

PROMPT> python myprog
Traceback (most …
Run Code Online (Sandbox Code Playgroud)

python module python-module

11
推荐指数
2
解决办法
6843
查看次数

ImportError:没有名为backend_tkagg的模块

我有这样的导入和代码:

import pandas as pd
import numpy as np
import statsmodels.formula.api as sm
import matplotlib.pyplot as plt    


#Read the data from pydatasets repo using Pandas
url = './file.csv'
white_side = pd.read_csv(url)    
#Fitting the model    
model = sm.ols(formula='budget ~ article_size',
               data=white_side,
               subset=white_side['producer'] == "Peter Jackson")
fitted = model.fit()
print fitted.summary()
Run Code Online (Sandbox Code Playgroud)

执行此代码后,我有这样的错误:

/usr/bin/python2.7 /home/seth/PycharmProjects/osiris_project/PMN_way/start.py
Traceback (most recent call last):
  File "/home/seth/PycharmProjects/osiris_project/PMN_way/start.py", line 5, in <module>
    import matplotlib.pyplot as plt
  File "/usr/lib64/python2.7/site-packages/matplotlib/pyplot.py", line 98, in <module>
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
  File …
Run Code Online (Sandbox Code Playgroud)

python module numpy python-module pycharm

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

在3.3中加载python模块时,我使用什么而不是PyString_AsString

我正在尝试使用此函数在我的一个c ++程序中从python加载一个函数

char * pyFunction(void)
{
    char *my_result = 0;
    PyObject *module = 0;
    PyObject *result = 0;
    PyObject *module_dict = 0;
    PyObject *func = 0;
    PyObject *pArgs = 0;

    module = PyImport_ImportModule("testPython");
    if (module == 0)
    {
        PyErr_Print();
        printf("Couldn't find python module");
    }
    module_dict = PyModule_GetDict(module); 
    func = PyDict_GetItemString(module_dict, "helloWorld"); 

    result = PyEval_CallObject(func, NULL); 
    //my_result = PyString_AsString(result); 
    my_result = strdup(my_result);
    return my_result;
}
Run Code Online (Sandbox Code Playgroud)

我应该使用什么而不是PyString_AsString?

c++ python python-module

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

加载MySQLdb模块时出错并"pip install MySQLdb"

我正在尝试启动Django项目.

我在尝试运行manage.py时遇到此错误:

(venv)dyn-160-39-161-214:proj Bren$ python manage.py
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/Bren/Desktop/fss/venv/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute_from_command_line
    utility.execute()
  File "/Users/Bren/Desktop/fss/venv/lib/python2.7/site-packages/django/core/management/__init__.py", line 328, in execute
    django.setup()
  File "/Users/Bren/Desktop/fss/venv/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/Bren/Desktop/fss/venv/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "/Users/Bren/Desktop/fss/venv/lib/python2.7/site-packages/django/apps/config.py", line 198, in import_models
    self.models_module = import_module(models_module_name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/Users/Bren/Desktop/fss/venv/lib/python2.7/site-packages/django/contrib/auth/models.py", line 41, in <module>
    class Permission(models.Model):
  File "/Users/Bren/Desktop/fss/venv/lib/python2.7/site-packages/django/db/models/base.py", line 139, in __new__
    new_class.add_to_class('_meta', Options(meta, **kwargs))
  File …
Run Code Online (Sandbox Code Playgroud)

python mysql django packages python-module

11
推荐指数
1
解决办法
5万
查看次数

从 __init__.py 导入方法

在 python 中导入模块时遇到一些问题。这是我的文件夹结构

my_app/
    app.py
    __init__.py (I want to import a function from this file)
    folder1/
        __init.py
        method1.py
    folder2/
        __init__.py
        method.py
Run Code Online (Sandbox Code Playgroud)

在我的根中,__init__.py我有这个功能

def want_to_be_run_elsewhere():
    pass
Run Code Online (Sandbox Code Playgroud)

在我的 app.py 中,我想导入这个函数并在我启动我的应用程序时运行它,但我不确定如何去做。

from my_app import want_to_be_run_elsewhere
Run Code Online (Sandbox Code Playgroud)

这会抛出一个名为 my_app 的无模块

据我所知,我拥有所有必要的__init__.py文件,所以它可能与 sys.path 相关?

我在这里阅读了一些类似的主题,但我无法解决这个问题。

python python-module

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

在多处理模块中为每个进程重新加载Python模块

有没有办法在使用Python的多处理模块创建的进程中加载​​模块的每个进程副本?我试过这个:

def my_fn(process_args):
    import my_module
    my_func()
Run Code Online (Sandbox Code Playgroud)

...但my_module中的子导入会一劳永逸地加载和缓存.特别是,其中一个子导入读取一个配置文件,其值根据第一个进程的环境设置.如果我试试这个:

def my_fn(process_args):
    try:
        my_module = reload(my_module)
    except NameError:
        import my_module
Run Code Online (Sandbox Code Playgroud)

... my_module的子导入不会重新加载.

python python-module python-multiprocessing

11
推荐指数
1
解决办法
971
查看次数

ImportError:没有名为utils的模块

我正在尝试导入实用程序文件,但只有当我通过脚本运行代码时才会遇到奇怪的错误.

当我运行test.py时

location:/home/amourav/Python/proj/test.py

码:

import os
os.chdir(r'/home/amourav/Python/')
print os.listdir(os.getcwd())
print os.getcwd()
from UTILS import *
Run Code Online (Sandbox Code Playgroud)

输出是:

['UTILS_local.py','UTILS.py','proj','UTILS.pyc']

/家庭/ amourav/Python的

回溯(最近一次调用最后一次):文件"UNET_2D_AUG17.py",第11行,来自UTILS import*ImportError:没有名为UTILS的模块

但是当我通过bash终端运行代码时,它似乎工作正常

bash-4.1$ python
>>> import os
>>> os.chdir(r'/home/amourav/Python/')
>>> print os.listdir(os.getcwd())
Run Code Online (Sandbox Code Playgroud)

['UTILS_local.py','UTILS.py','proj','UTILS.pyc']

>>> from UTILS import *
Run Code Online (Sandbox Code Playgroud)

等等等等 - 等等等等

我在Linux机器上运行Python 2.7.10

python import module python-module python-2.7

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