根据官方文档,os.path是一个模块.那么,导入它的首选方式是什么?
# Should I always import it explicitly?
import os.path
Run Code Online (Sandbox Code Playgroud)
要么...
# Is importing os enough?
import os
Run Code Online (Sandbox Code Playgroud)
请不要回答" os为我导入作品".我知道,它现在也适用于我(从Python 2.6开始).我想知道的是关于这个问题的任何官方建议.因此,如果您回答此问题,请发布您的推荐信.
在Python中,是否可以为导入的模块定义别名?
例如:
import a_ridiculously_long_module_name
Run Code Online (Sandbox Code Playgroud)
...所以它的别名为'short_name'.
模块A包括import B在其顶部.然而在试验条件下,我想嘲笑 B的A(模拟A.B)和进口完全避免B.
实际上,B并非故意安装在测试环境中.
A是被测单位.我必须导入A及其所有功能.B是我需要模拟的模块.但是我如何在A中模拟B并阻止A导入真实B,如果A做的第一件事就是导入B?
(没有安装B的原因是我使用pypy进行快速测试,不幸的是B还与pypy不兼容.)
怎么可以这样做?
我是使用python进行编程的新手,我正在尝试使用分隔符打印并结束但它仍然给我一个语法错误我正在使用python 2.7我从vim编辑器编码,这是我的代码:
from __future__ import print_function
import sys, os, time
for x in range(0,10):
print x, sep=' ', end=''
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
请帮忙.并使用我的代码,告诉我应该在哪里使用__CODE__
谢谢
我似乎无法使用鼻子测试框架来识别文件结构中测试脚本下面的模块.我已经设置了一个最简单的例子来演示这个问题.我将在下面解释.
这是包文件结构:
./__init__.py
./foo.py
./tests
./__init__.py
./test_foo.py
Run Code Online (Sandbox Code Playgroud)
foo.py包含:
def dumb_true():
return True
Run Code Online (Sandbox Code Playgroud)
tests/test_foo.py包含:
import foo
def test_foo():
assert foo.dumb_true()
Run Code Online (Sandbox Code Playgroud)
两个init .py文件都是空的
如果我nosetests -vv在主目录(foo.py所在)中运行,我得到:
Failure: ImportError (No module named foo) ... ERROR
======================================================================
ERROR: Failure: ImportError (No module named foo)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/loader.py", line 379, in loadTestsFromName
addr.filename, addr.module)
File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/importer.py", line 39, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/importer.py", line 86, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File …Run Code Online (Sandbox Code Playgroud) 这是我第一次真正坐下来尝试python 3,似乎失败了.我有以下两个文件:
config.py中定义了一些函数以及一些变量.我把它剥离到以下内容:
但是,我收到以下错误:
ModuleNotFoundError: No module named 'config'
Run Code Online (Sandbox Code Playgroud)
我知道py3约定是使用绝对导入:
from . import config
Run Code Online (Sandbox Code Playgroud)
但是,这会导致以下错误:
ImportError: cannot import name 'config'
Run Code Online (Sandbox Code Playgroud)
所以我不知道该怎么做......非常感谢任何帮助.:)
我正在尝试从特定目录导入模块.
问题是,如果我使用sys.path.append(mod_directory)附加路径然后打开python解释器,该目录mod_directory将添加到列表sys.path的末尾.如果我PYTHONPATH在打开python解释器之前导出变量,则该目录将添加到列表的开头.在后一种情况下,我可以导入模块,但在前者,我不能.
有人可以解释为什么会这样,并给我一个解决方案mod_directory,在 python脚本中添加到开头?
我是PyDev和Python的新手,尽管我已经使用Eclipse for Java了.我正在尝试通过一些Dive Into Python示例,这感觉就像一个非常微不足道的问题,只是变得非常烦人.我正在使用Ubuntu Linux 10.04.
我希望能够使用位于目录中的文件odbchelper.py /Desktop/Python_Tutorials/diveintopython/py
这是我在PyDev/Eclipse项目中正在处理的example.py文件:
import sys
sys.path.append("~/Desktop/Python_Tutorials/diveintopython/py")
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我希望我的代码的下一行是:
import odbchelper
Run Code Online (Sandbox Code Playgroud)
这会导致每次都无法解决导入错误.我已经将__init__.py文件添加到几乎所有可能的目录中,并没有任何帮助.我尝试__init__.py一次一个地添加文件到项目位置和odbchelper.py文件之间的各级目录,我也尝试将__init__.py文件同时添加到其间的所有目录中.两者都不起作用.
我想要做的就是在其他目录中的某个地方有一个项目,例如/Desktop/MyStuff/Project,我有example.py ...然后从example.py我要从中导入odbchelper.py/Desktop/Python_Tutorials/diveintopython/py/
我可以找到的每个留言板响应只是说使用该sys.path.append()函数将此目录添加到我的路径,然后导入它......但这正是我在我的代码中所做的并且它无法正常工作.
我也尝试过Ctrl- 1技巧来抑制错误信息,但程序仍然无法正常运行.我收到一个错误ImportError: No module named odbchelper.因此,显然没有添加路径,或者存在一些问题,即我添加__init__.py文件的所有排列都错过了.
这件事很简单......从我机器上其他地方存在的某个文件调用东西......这需要付出很多努力.
有没有一种直接的方法来查找属于python包的所有模块?我发现这个旧的讨论并不是真正的结论,但在推出基于os.listdir()的自己的解决方案之前,我希望得到明确的答案.
据我所知,Python有3种方法可以找出正在运行的操作系统:
os.namesys.platformplatform.system()了解此信息通常在条件导入中使用,或者使用不同平台之间的功能(例如,time.clock()在Windows上与time.time()UNIX上).
我的问题是,为什么有3种不同的方法呢?何时应该使用一种方式而不是另一种方式?哪种方式是"最佳"(大多数面向未来或最不可能意外地排除您的程序实际可以运行的特定系统)?
看起来sys.platform是不是更具体的os.name,可以让你区分win32从cygwin(而不是只nt),并linux2从darwin(而不是只posix).但如果是这样的话,那么sys.platform和之间的区别platform.system()呢?
例如,哪个更好,这个:
import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff
Run Code Online (Sandbox Code Playgroud)
或这个?:
import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff
Run Code Online (Sandbox Code Playgroud)
现在我会坚持sys.platform,所以这个问题并不是特别紧迫,但我非常感谢对此有所澄清.
python ×10
python-import ×10
module ×2
alias ×1
coding-style ×1
loops ×1
mechanize ×1
mocking ×1
nose ×1
package ×1
packages ×1
pydev ×1
python-2.7 ×1
python-3.x ×1
pythonpath ×1
vim ×1