首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试着理解这一现象

试着理解这一现象
EN

Stack Overflow用户
提问于 2016-01-28 19:00:57
回答 2查看 252关注 0票数 0
  1. 我正在努力理解与我的项目相关的PYTHONPATH

我的项目在dir $HOME/Programs/medusa-2.0中,我的源文件在$HOME/Programs/medusa-2.0/medusa中。

我在.bashrc中设置了这样的PYTHONPATH:

代码语言:javascript
复制
export MEDUSA_HOME=$HOME/Programs/medusa-2.0
export PYTHONPATH=${MEDUSA_HOME}/medusa:${PYTHONPATH}

当我试图导入一个类from system import error_handler, hello时,会发现错误,说明它找不到函数execute_command。我不明白我为什么会犯这个错误?是因为我在导入中执行循环,因为execute_commandmedusasettings中。

代码语言:javascript
复制
ImportError                               Traceback (most recent call last)
<ipython-input-2-7f959e81c735> in <module>()
----> 1 from medusasystem import error_handler, hello

/home/ubuntu/Programs/medusa-2.0/medusa/medusasystem.py in <module>()
  9 from local import lcat
 10 import psutil
---> 11 import ranking
 12 import settings
 13 import simplejson as json

/home/ubuntu/Programs/medusa-2.0/medusa/ranking.py in <module>()
  7 import cache
  8 from decors import make_verbose
----> 9 from scheduler.predictionranking import get_prediction_metrics
 10 from scheduler.randomranking import get_random_metrics
 11 from settings import medusa_settings

/home/ubuntu/Programs/medusa-2.0/medusa/scheduler/predictionranking.py in <module>()
  6 
  7 from celery import task
----> 8 import hdfs
  9 from networkdaemon import read_network_data
 10 from numpylinearregression import estimate_job_execution, calculate_linear_regression_numpy

/home/ubuntu/Programs/medusa-2.0/medusa/hdfs.py in <module>()
  4 from hadoopy._hdfs import _checked_hadoop_fs_command
  5 from celery import task
----> 6 from medusasystem import execute_command
  7 import settings
  8 

ImportError: cannot import name execute_command

我尝试用python -v启动一个python文件,并得到了以下错误:

代码语言:javascript
复制
# /home/ubuntu/Programs/medusa-2.0/medusa/hdfs.pyc matches /home/ubuntu/Programs/medusa-2.0/medusa/hdfs.py
import hdfs # precompiled from /home/ubuntu/Programs/medusa-2.0/medusa/hdfs.pyc
Traceback (most recent call last):
File "tests/testHello.py", line 3, in <module>
 from medusasystem import error_handler, hello
File "/home/ubuntu/Programs/medusa-2.0/medusa/medusasystem.py", line 11, in <module>
 import ranking
File "/home/ubuntu/Programs/medusa-2.0/medusa/ranking.py", line 9, in <module>
 from scheduler.predictionranking import get_prediction_metrics
 File "/home/ubuntu/Programs/medusa-2.0/medusa/scheduler/predictionranking.py", line 8, in <module>
 import hdfs
File "/home/ubuntu/Programs/medusa-2.0/medusa/hdfs.py", line 6, in <module>
 from medusasystem import execute_command
ImportError: cannot import name execute_command
  1. 如果我为我的项目启动了虚拟环境,那么PYTHONPATH不应该在虚拟环境中定义吗?
EN

回答 2

Stack Overflow用户

发布于 2016-01-28 22:04:09

  1. 由于提供了这些信息,我认为您只是从错误的地方导入了它:“我不明白为什么会出现这个错误?是不是因为我在导入过程中做了一个循环,因为execute_command处于暂停状态?”但在痕量中有from settings import medusa_settingsfrom medusasystem import execute_command。验证execute_command在混合系统中。
  2. virtualenv不会改变PYTHONPATH,因此在激活之后也是一样的(当然,除非您做的事情类似于下一句中的内容)。如果您的问题是在使用virtualenv时设置它,请参见以下答案:How do you set your pythonpath in an already-created virtualenv?。通过在.bashrc中执行此操作,您将在打开shell时定义它,而不是将其附加到虚拟脚本。
票数 0
EN

Stack Overflow用户

发布于 2016-01-29 00:11:22

这个问题是关于循环进口问题的。我取代了:

代码语言:javascript
复制
from medusasystem import execute_command

使用

代码语言:javascript
复制
import medusasystem
execute_command = medusasystem.execute_command

而且起作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35069787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档