我想在C中做这样的事情:
#ifdef SOMETHING
do_this();
#endif
Run Code Online (Sandbox Code Playgroud)
但在Python中,这不是jive:
if something:
import module
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?这首先是可能的吗?
我有以下模块:
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"
看起来解释器在实际运行代码之前正在查找当前作用域中的赋值.
我要赶一个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) 我有一个像这样结构的项目:
|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
#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)
我是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,但它没有帮助我.
我大部分时间都在尝试解决此问题。所以我想从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并重新安装了蟒蛇。
卡文件位于同一目录中,所以我不确定为什么找不到它。
我创建了一个名为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)
代码不是保留字,为什么我不能命名模块代码?
我正在和我一起工作
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 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 ×10
python-import ×10
python-2.7 ×2
automation ×1
bokeh ×1
exception ×1
gpx ×1
holoviews ×1
import ×1
namespaces ×1
selenium ×1
splinter ×1
unit-testing ×1