标签: python-import

如何在Python中有条件地导入?

我想在C中做这样的事情:

#ifdef SOMETHING
do_this();
#endif
Run Code Online (Sandbox Code Playgroud)

但在Python中,这不是jive:

if something:
    import module
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?这首先是可能的吗?

python python-import

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

Python函数作用域导入

我有以下模块:

main.py

import my_import

my_import.a_func()
Run Code Online (Sandbox Code Playgroud)

my_import.py

FOO = "foo"
BAR = []

def a_func():
   BAR.append("bar") #ok
   FOO = FOO + "foo" #UnboundLocalError: 
                     #local variable 'FOO' referenced before assignment
Run Code Online (Sandbox Code Playgroud)

这可能是由于进口,但如何?

[编辑]

从我得到的答案不是导入是crulpit,但后续仍然是奇怪的:

FOO = "foo"
BAR = []
def a_func():
    BAR.append("bar")
    print(FOO)
a_func()
Run Code Online (Sandbox Code Playgroud)

- >打印"foo"

FOO = "foo"
BAR = []
def a_func():
    BAR.append("bar")
    print(FOO)
    FOO = FOO + "foo"    
a_func()
Run Code Online (Sandbox Code Playgroud)

- >失败,"UnboundLocalError:赋值前引用的局部变量'FOO'"并且不打印"foo"

看起来解释器在实际运行代码之前正在查找当前作用域中的赋值.

python python-import

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

如何在Python中引用异常类?

我要赶一个GPSException被抛出gpxpy库.

try:
    gpx = gpxpy.parse(open(filepath))
except GPXException:
    print "GPXException for %s." % filepath
Run Code Online (Sandbox Code Playgroud)

由于我是Python的新手,我不明白如何通过命名空间引用异常,例如gpxpy.gpx.GPSException或者导入语句.

import gpxpy
import gpxpy.gpx
import gpxpy.gpx.GPSException
Run Code Online (Sandbox Code Playgroud)

python namespaces exception gpx python-import

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

python unittest导入类子目录

我有一个像这样结构的项目:

|tools/
|-- test/
|   |-- __init__.py
|   |-- test_class1.py
|   |-- test_class2.py
|   
|-- tools/
|-- __init__.py
|   |-- class1.py
|   |-- class2.py
|   
|-- test_runner (Python script that calls unittest.TestLoader().discover('test'))
|-- README.md
Run Code Online (Sandbox Code Playgroud)

我想运行test_runner并让它执行test文件夹中的所有测试.我的个人测试会有这样的一行:from test_class import TestClass测试适当的类.

test_runner 看起来像这样:

#!/usr/bin/env python

import unittest
import sys
import os
sys.path.append(os.path.realpath(__file__) + '/tools') 

suite = unittest.TestLoader().discover('test')
results = unittest.TextTestRunner(verbosity=2).run(suite)
if len(results.errors) > 0 or len(results.failures) > 0:
    sys.exit(1)
sys.exit()
Run Code Online (Sandbox Code Playgroud)

现在这不起作用,我的测试文件无法导入相应的类.如果我这样做,我可以让它工作,export PYTHONPATH=/path/to/file但我希望通过脚本实现这一点.

我也尝试sys.path.insert(0, os.path.dirname(__file__) …

python unit-testing python-import python-2.7 python-unittest

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

Python导入与直接执行

#conf.py

def init():
    global mylist   
    mylist=[]


#change.py

import conf

def change():
    if __name__ == "__main__":
        print('Direct')
        conf.mylist.append('Directly executed')
        print(conf.mylist)
    else:
        conf.mylist.append('It was imported') 


#exec.py

import conf
import change

conf.init()  
change.change()

print (conf.mylist)
Run Code Online (Sandbox Code Playgroud)

运行exec.py时,结果是我的预期,直接运行change.py时,我没有得到任何输出(没有Direct,没有conf.mylist)

python python-import

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

Splinter:ImportError:无法导入名称Browser

我是Splinter的新手,但我几次使用python.所以我希望使用splinter自动化网站.但是当我执行它时,我得到"ImportError:无法导入名称浏览器"错误.

这是我的代码.

from splinter import Browser

browser = Browser()
browser.visit('http://google.com')
browser.fill('q', 'splinter - python acceptance testing for web applications')
browser.find_by_name('btnG').click()

if browser.is_text_present('splinter.readthedocs.org'):
    print "Yes, the official website was found!"
else:
    print "No, it wasn't found... We need to improve our SEO techniques"

browser.quit()
Run Code Online (Sandbox Code Playgroud)

在终端这是我得到的.

Traceback (most recent call last):
  File "splinter.py", line 3, in <module>
    from splinter import Browser
  File "/var/www/project/splinter.py", line 3, in <module>
    from splinter import Browser
ImportError: cannot import name Browser
Run Code Online (Sandbox Code Playgroud)

如何在没有任何错误的情况下运行此程序?我已经提到类似问题的解决方案,如删除splinter.pyc,但它没有帮助我.

python selenium automation python-import splinter

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

导入错误Python:没有名为“ card”的模块

我大部分时间都在尝试解决此问题。所以我想从github导入'deuces'包。但是,我不断收到错误消息:

!python
Run Code Online (Sandbox Code Playgroud)

Python 3.5.2 | Anaconda 4.2.0(64位)| (默认值,2016年7月5日,11:41:13)Win32上的[MSC v.1900 64位(AMD64)]键入“帮助”,“版权”,“信用”或“许可证”以获取更多信息。

>>> from deuces import Card
Run Code Online (Sandbox Code Playgroud)

追溯(最近一次通话最近):文件“ C” \ Program Files \ Anaconda3 \ lib \ site-packages \ deuces \ __ init__.py中的文件“”,行1,来自卡导入Card ImportError:否名为“卡”的模块

我一直在尝试使用anaconda并进行pip安装。我不知道自己在做什么错-我还尝试了卸载常规Python并重新安装了蟒蛇。

卡文件位于同一目录中,所以我不确定为什么找不到它。

python python-import

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

无法从名为'code'的模块导入任何函数

我创建了一个名为code:code.py的模块并编写了一个简单的函数:

def main():
    print("simple function")
Run Code Online (Sandbox Code Playgroud)

我尝试在site-packages中删除此文件,当我运行时:

import code
code.main()
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:AttributeError:模块'code'没有属性'main'.

有趣的是,如果我将模块重命名为foo.py,这段代码就可以了:

import foo
foo.main()
Run Code Online (Sandbox Code Playgroud)

代码不是保留字,为什么我不能命名模块代码?

python python-module python-import

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

holoviews /散景导入错误

我正在和我一起工作

In [2]: bokeh.__version__
Out[2]: '0.12.1'

In [4]: holoviews.__version__
Out[4]: 1.8.4
Run Code Online (Sandbox Code Playgroud)

以下导入

from holoviews.plotting.bokeh import BokehRenderer
Run Code Online (Sandbox Code Playgroud)

产生错误:

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-c53ae81a79e0> in <module>()
----> 1 from holoviews.plotting.bokeh import BokehRenderer

/usr/local/lib/python3.6/site-packages/holoviews/plotting/bokeh/__init__.py in <module>()
      2 
      3 import numpy as np
----> 4 from bokeh.palettes import all_palettes
      5 
      6 from ...core import (Store, Overlay, NdOverlay, Layout, AdjointLayout,

ImportError: cannot import name 'all_palettes'
Run Code Online (Sandbox Code Playgroud)

它以前工作过,我无法追踪发生了什么变化.

python data-visualization python-import bokeh holoviews

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

如何简单地在Python中导入文件夹?

使用python 2.7.16运行python代码时,当我尝试从python代码根目录下的文件夹中导入某些文件时遇到问题。

我认为这可能是路径问题,但是当我手动将文件夹添加到路径时,我从其他文件中得到了其他类似的错误。所以不是很有用。

我的代码很简单

from core import network 
Run Code Online (Sandbox Code Playgroud)

python代码与core文件夹位于同一位置

目录结构为:

目录1:

  • 代码

  • 核心文件夹:

    -network.py

错误是:

from core import config
ImportError: No module named core
Run Code Online (Sandbox Code Playgroud)

你怎么看 ?

python import python-import python-2.7

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