我不知道在这里粘贴所有代码是否可行,但我正在查看这个git repo中的代码.
如果你看一下他们做的例子:
ec2 = EC2('access key id', 'secret key')
Run Code Online (Sandbox Code Playgroud)
......但是没有EC2课.但是,看起来libcloud\providers.py有一个dict映射EC2到EC2NodeDriver找到的libcloud\drivers\ec2.py.正确的映射是通过计算的get_driver(provider),但该方法似乎不会在任何地方调用.
显然,我是python的新手,但不是编程.我甚至不确定我应该在文档中查找什么来解决这个问题.
我有一个Python程序,有几个慢进口.我想延迟导入它们直到需要它们为止.例如,如果用户只是试图打印帮助消息,那么导入慢速模块就很愚蠢.最恐怖的方法是什么?
我将添加一个我正在玩的解决方案作为答案.但我知道你们都可以做得更好.
我刚从2.5升级到python2.7.5,现在我收到此错误.
ImportError: Import by filename is not supported. 在以下代码行:
set = __import__(ground[0], globals(), locals(), ['*'], level=0)
Run Code Online (Sandbox Code Playgroud)
我们不能再打电话__import__了?
在2.7中解决了这个问题?
我有以下2种不同的datetime用法:
date=request.GET.get('date','')
if date:
date = datetime.strptime(date, "%m/%d/%Y")
print date
else:
date = datetime.date.today()
Run Code Online (Sandbox Code Playgroud)
看来所需的进口是:
from datetime import datetime
date = datetime.strptime(date, "%m/%d/%Y")
Run Code Online (Sandbox Code Playgroud)
和
import datetime
date = datetime.date.today()
Run Code Online (Sandbox Code Playgroud)
我不能同时拥有:
from datetime import datetime
import datetime
Run Code Online (Sandbox Code Playgroud)
或一个优先于另一个。
如果我有一个,则会收到错误消息:对象今天没有属性
如何使用这两个日期时间函数?
我正在构建numpy,并想知道为什么他们在这里使用了相对导入.为什么他们使用相对进口而不是直接进口,如import fft(比方说).
我认为直接导入会起作用,所以克隆它并将源代码行197更改为
import fft
Run Code Online (Sandbox Code Playgroud)
,但它没有用.它把错误扔了
ImportError:没有名为fft的模块
为什么它找不到fft模块,即使它与numpy __init__.py位于同一个文件夹中 .
所以我模拟了一个类似的环境,看看为什么它不起作用.我在其中创建了模块(mod1)和另一个(mod2).从mod1 __init__.py我导入mod2,最后将包含模块mod1的文件夹添加到python路径.然后编写一个python脚本作为sample.py包含
import mod1
Run Code Online (Sandbox Code Playgroud)
一切正常,无需相对导入.
但为什么它不在numpy里面工作呢?
注意:我在virtual-env中有numpy.这会造成麻烦吗?
调试更新:
import numpy.fft
Run Code Online (Sandbox Code Playgroud)
工作.我检查了"__name__",它很笨拙.但为什么"numpy".是必要的,因为它已经在numpy模块??? 更重要的是,因为__name__被设置为numpy,它应该能够找出其中的fft模块.为什么它不起作用的概念...我以前用来模拟的例子是我刚刚使用导入的相同场景mod2尽管mod2在mod1内部,我没有必要导入mod1.mod2
我遇到了一个不幸的情况,其中一个特定文件的文件名是Python中的关键字.有没有办法在没有重命名文件的情况下"绕过"这个?
libraries/import.py 有功能 my_function()
from libraries.import import my_function
Run Code Online (Sandbox Code Playgroud)
得到:
E999 - SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
并指向" .import"部分
我试了几件事:
from "libraries.import" import my_function
from libraries."import" import my_function
from libraries import import.my_function
from repr(libraries.import) import my_function
from `libraries.import` import my_function # deprecated
import libraries.import.my_function
Run Code Online (Sandbox Code Playgroud)
但它们都有相同的结果:SyntaxError.
也无法在Python手册中找到任何提示 - 但也没有关于使用保留名称的警告:)这可能吗?怎么样?
我在同一个".py"文件中编写两个单独的函数时遇到了一个奇怪的情况.我使用的是python 2.7.12.这是我的代码:
def do_the_job(n, list):
for i in range(2, n):
a = list[i - 1]
b = list[i - 2]
ap_me = list[i- a] + list[i - b]
list.append(ap_me)
return list
def func_two(n, k):
counter = 0
list = [1, 1]
do_the_job(n,list)
for i in range(n):
if list[i] >= k:
counter += 1
return counter
Run Code Online (Sandbox Code Playgroud)
然后导入,我写入from my_py import func_two控制台.当我写func_two(10,3)它导入do_the_job函数也成功运行.但是,这里有帖子的原因,当我写入do_the_job(7,[1,1])控制台时,它出错了NameError: name 'do_the_job' is not defined.
为什么我可以使用do_the_job函数作为func_two导入函数的一部分func_two …
我有一个包含一些python文件的文件夹:
modules
|--> __init__.py
|--> car.py
|--> plane.py
|--> ship.py
|--> etc...
Run Code Online (Sandbox Code Playgroud)
每个文件都包含以下内容:
car.py
NAME = "car_name"
def mainloop(*args):
...
return whatever
Run Code Online (Sandbox Code Playgroud)
plane.py
NAME = "some_different_name"
def mainloop(*args):
...
return whatever
Run Code Online (Sandbox Code Playgroud)
等等...
我想从我的父目录动态导入它们作为这样的字典:
from modules import modules
print(modules)
{
"car_name": <function mainloop at ...>,
"some_different_name": <function mainloop at ...>,
etc..
}
Run Code Online (Sandbox Code Playgroud)
我不知道文件夹或文件名上会有多少文件.我该怎么做?
我一直在维护一个项目.我发现有人编写了一个函数,他在for循环中创建了一个import语句
for obj in obj_list:
from Levenshtein._levenshtein import distance
if distance(obj.title, "some string") <= 2:
do something
Run Code Online (Sandbox Code Playgroud)
我假设在for循环中导入一些东西会导致不必要的指令执行.因此,我想重构代码.但要做到这一点,我需要一个基本原理来支持我的假设,即在for循环中导入不是一个好习惯.我的假设是否正确?
来自python docs:
import_stmt: "import" module ["as" name] ("," module ["as" name] )*
| "from" module "import" identifier ["as" name]
("," identifier ["as" name] )*
| "from" module "import" "*"
module: (identifier ".")* identifier
Run Code Online (Sandbox Code Playgroud)
为什么我们需要为库定义别名?