我正在尝试导入实用程序文件,但只有当我通过脚本运行代码时才会遇到奇怪的错误。
当我运行test.py
时位置:/home/amourav/Python/proj/test.py
代码:
import os
os.chdir(r'/home/amourav/Python/')
print os.listdir(os.getcwd())
print os.getcwd()
from UTILS import *
输出结果为:
['UTILS_local.py','UTILS.py','proj','UTILS.pyc']
/家庭/ amourav / Python的
追踪(最近一次通话): 文件“UNET_2D_AUG17.py”,第11行,in 来自UTILS进口* ImportError:没有名为UTILS的模块
但是当我通过bash终端运行代码时,它似乎工作正常
bash-4.1$ python
>>> import os
>>> os.chdir(r'/home/amourav/Python/')
>>> print os.listdir(os.getcwd())
['UTILS_local.py','UTILS.py','proj','UTILS.pyc']
>>> from UTILS import *
等等等等等等等等等等等等等等等等等
我在Linux机器上运行Python 2.7.10
答案 0 :(得分:5)
您的项目如下所示:
import os, sys
sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
# now you may get a problem with what I wrote below.
import UTILS
如果您想导入UTILS.py,可以选择:
(1)在test.py
中添加sys.path的路径Python
+- proj
| +- test.py
| +- __init__.py
+- UTILS.py
+- __init__.py
+- ...
(2)创建一个包(仅导入)
import Python.proj.test
现在,如果你from .. import UTILS
:
test.py
错误答案
我有几次这个错误。我想,我记得。
修复:不要运行./test.py
,请运行sys.path
。
如果您查看test.py
,可以看到其中有一个空字符串,该字符串是执行文件的路径。
''
将sys.path
添加到./test.py
'.'
将sys.path
添加到"."
我认为只能从$solrPath = "C:\Solr"
# Get Zip file containing Java Server JRE from CDN
Invoke-WebRequest -Uri 'http://mycdn.com/Solr/Downloads/jdk1.8.0_144.zip' -OutFile C:\mydir\java.zip
Write-Output "Java Server JRE Zip file downloaded from CDN"
# Unzip Java Server JRE Directory
Expand-Archive -Path C:\mydir\java.zip -DestinationPath $solrPath -Force
Write-Output "Java Server JRE Zip file extracted"
# Set Java Path and Home Environmental Variables
# Add the PATH environment variable to point to the Java Directory Bin
$oldpath = (Get-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment’ -Name PATH).path
$newpath = “$oldpath;$solrPath\jdk1.8.0_144\jre\bin”
Set-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment’ -Name PATH –Value $newpath
$donepath = (Get-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment’ -Name PATH).path
Write-host "Validation; new value set to $donepath"
执行导入。