考虑到模块的名称,如何测试是否安装了一组模块.例如
modules = set(["sys", "os", "jinja"])
for module in modules:
# if test(module exists):
# do something
Run Code Online (Sandbox Code Playgroud)
虽然可以将测试写成:
try:
import sys
except ImportError:
print "No sys!"
Run Code Online (Sandbox Code Playgroud)
这对我正在做的事情来说有点麻烦.有没有动态的方法来做到这一点?
我已经尝试了eval("import%s"%module),但是抱怨编译错误.
我很感谢你的想法和建议.谢谢.
我有几个项目目录,并希望拥有特定于它们的库/模块.例如,我可能有这样的目录结构:
myproject/
mymodules/
__init__.py
myfunctions.py
myreports/
mycode.py
Run Code Online (Sandbox Code Playgroud)
假设有一个调用的函数add中myfunctions.py,我可以把它称为mycode.py最幼稚的程序:
execfile('../mymodules/myfunctions.py')
add(1,2)
Run Code Online (Sandbox Code Playgroud)
但是为了更加成熟,我也可以做到
import sys
sys.path.append('../mymodules')
import myfunctions
myfunctions.add(1,2)
Run Code Online (Sandbox Code Playgroud)
这是最惯用的方式吗?还有一些关于修改PYTHONPATH(os.environ['PYTHONPATH']?)的提及,但是我应该研究这个或其他什么?
此外,我已经看到import类语句中包含的语句,以及在包含类定义的Python文件顶部定义的其他实例中.有没有正确/首选的方式来做到这一点?
我想知道是否有一种编写以下模块代码的方法,而无需在整个模块代码中添加另一个缩进级别.
# module code
if not condition:
# rest of the module code (big)
Run Code Online (Sandbox Code Playgroud)
我正在寻找这样的东西:
# module code
if condition:
# here I need something like a `return`
# rest of the module code (big)
Run Code Online (Sandbox Code Playgroud)
注意,我不想抛出异常,导入应该正常传递.
我想创建一个Python扩展,我真的很喜欢使用Cython.主要是为了获得更多关于它的知识,并利用速度增益,如果有的话.我已经阅读了相当多的Cython文档,但我还不是计算机科学家(还),并且没有深入的知识来理解低级基础知识,因此我提出以下问题的原因:
我只是想知道,如果我在我正在开发的Python扩展中使用外部导入(例如,ORM或SQL库或任何其他第三方库)会发生什么?
Cython如何处理它?
如果这个导入的库/扩展名是纯Python还是编译它会有区别吗?
处理这个问题的正确方法是什么?
谢谢.
PS.问题以粗体显示.
我正在尝试在Linux上使用PyInstaller 2.0制作Python脚本的二进制版本.当我跑:
$ python pyinstaller.py myscript.py
Run Code Online (Sandbox Code Playgroud)
我收到错误:
8907 INFO: Looking for Python library libpython2.7.so
Traceback (most recent call last):
...
File "pyinstaller.py", line 91, in <module>
raise IOError("Python library not found!")
IOError: Python library not found!
Run Code Online (Sandbox Code Playgroud)
怎么解决这个问题?
我在用:
Linux#98-Ubuntu x86_64 GNU/Linux
用python 2.7.系统上还有其他的Pythons但是我已经设定了:
alias python="python2.7"
Run Code Online (Sandbox Code Playgroud)
在我正在使用的服务器中,只有/usr/lib/python2.6而且没有,/usr/lib/python2.7但是我经常使用python 2.7并且功能正常等等所以我不明白为什么找到它的库会有问题.有一个/usr/local/lib/libpython2.7.a.
在尝试使用RaspberryPi上安装的RPi python模块时,在我的views.py中的一个请求定义中使用它我得到
Module not imported correctly!
Run Code Online (Sandbox Code Playgroud)
在Django中安装RPi并正确使用它的正确方法是什么?我需要RPi,因为我的运动传感器,使用本教程作为运动传感器的起点,但想将它集成到django视图(页面)
借用http://pythoncentral.io/how-to-create-a-python-package/上的简化示例
我有一个类似的文件结构如下,其中Mammals.py和Birds.py定义具有相同名称的类:
Project/
Animals/
__init__.py
Mammals.py
Birds.py
Run Code Online (Sandbox Code Playgroud)
在Project/目录中运行ipython解释器并且__init__.py为空时,以下工作:
from Animals.Mammals import Mammals
x = Mammals()
x.printMammals()
Run Code Online (Sandbox Code Playgroud)
我希望能够写from Animals import Mammals而不是from Animals.Mammals import Mammals.我相信这样做的方法是使__init__.py文件内容如下:
from Mammals import Mammals
from Birds import Birds
Run Code Online (Sandbox Code Playgroud)
但是,完成此操作后,从类似的Project/源ipython解释器中,以下输入会产生错误:
In [1]: from Animals import Mammals
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-6d651848af9b> in <module>()
----> 1 from Animals import Mammals
/Users/username/Project/Animals/__init__.py in <module>()
----> 1 from Mammals import Mammals
2 from Birds …Run Code Online (Sandbox Code Playgroud) 是否可以将所有python模块从一台Windows计算机复制到另一台计算机?它们都运行相同版本的Python 2.7.12。
这样做的原因是我可以在其中一个上访问Internet,而在另一个上手动安装模块则由于依赖而需要大量时间。
似乎使用两个不同的PYTHONPATHs 导入的实体不是相同的对象.
我在我的代码中遇到了一个小问题,我想用一个小例子来解释它.
我创建了源代码树:
a/
__init__.py
b/
__init__.py
example.py
Run Code Online (Sandbox Code Playgroud)
在example.py中:
class Example:
pass
Run Code Online (Sandbox Code Playgroud)
从文件夹的父级a,我运行python和这个测试:
>>> import sys
>>> sys.path.append("/home/marco/temp/a")
>>>
>>> import a.b.example as example1
>>> import b.example as example2
>>>
>>> example1.Example is example2.Example
False
Run Code Online (Sandbox Code Playgroud)
所以问题是:结果为什么False?即使通过两个不同的路径导入,该类也是相同的.如果类是自定义异常并且您尝试捕获它,那么这是一个完全混乱except.
用python 3.4.3测试
如何排除打包文件夹conda build?
我正在使用构建第一个软件包conda build。
我的meta.yaml文件如下所示:
package:
name: 'some_name'
version: {{ load_setup_py_data().get('version') }}
source:
path: ./
build:
script: python setup.py install --single-version-externally-managed --record=record.txt
requirements:
run:
- python >=3.6
- pandas >=0.2
- numpy >=1.12
# Packages that must be installed
# in the user's conda environment
# to run this package.
build:
# Packages used by setup.py
# to install this package.
# May also install compilers
# for non-python code.
- python
- …Run Code Online (Sandbox Code Playgroud) python-module ×10
python ×9
python-2.7 ×2
anaconda ×1
c ×1
conda ×1
conda-build ×1
cython ×1
django ×1
import ×1
init ×1
module ×1
packages ×1
pyinstaller ×1
raspberry-pi ×1
reflection ×1
windows ×1