簡體   English   中英

無法導入本地模塊

[英]Can't import local module

我在/opt目錄中安裝了一個應用程序,並將其根目錄添加到PATH(適用於所有想要使用它的用戶)。 現在,當我從用戶調用主腳本時,它可以正常工作,但其他用戶報告相同的錯誤:

user@server:~$ ragout.py -h
Traceback (most recent call last):
  File "/opt/ragout-2.0-linux-x86_64/ragout.py", line 33, in <module>
    from ragout.main import main
  File "/opt/ragout-2.0-linux-x86_64/ragout.py", line 33, in <module>
    from ragout.main import main
ImportError: No module named main

這是主腳本:

#!/usr/bin/env python2.7

#(c) 2013-2014 by Authors
#This file is a part of Ragout program.
#Released under the BSD license (see LICENSE file)

"""
This script does all the necessary preparations
and invokes Ragout
"""

import os
import sys

LIB_DIR = "lib"

#Check Python version
if sys.version_info[:2] != (2, 7):
    print("Error: Ragout requires Python version 2.7 ({0}.{1} detected)."
          .format(sys.version_info[0], sys.version_info[1]))
    sys.exit(-1)

#Setting executable paths
ragout_root = os.path.dirname(os.path.realpath(__file__))
lib_absolute = os.path.join(ragout_root, LIB_DIR)
sys.path.insert(0, lib_absolute)
sys.path.insert(0, ragout_root)
os.environ["PATH"] = lib_absolute + os.pathsep + os.environ["PATH"]


#Ragout entry point
from ragout.main import main
sys.exit(main())

我認為腳本在擴展ragout_rootlib_absolute可能會遇到一些問題,因此我在from ragout.main import main之前添加了print(ragout_root, lib_absolute)來查看發生了什么。 現在,當我從用戶運行應用程序時,我得到了:

me@server:~$ ragout.py -h
('/opt/ragout-2.0-linux-x86_64', '/opt/ragout-2.0-linux-x86_64/lib')
usage: ragout.py [-h] [-o output_dir] [-s {sibelia,maf,hal}] [--refine]
                 [--solid-scaffolds] [--overwrite] [--repeats] [--debug]
                 [-t THREADS] [--version]
                 recipe_file
...

和用戶得到這個

user@server:~$ ragout.py -h
('/opt/ragout-2.0-linux-x86_64', '/opt/ragout-2.0-linux-x86_64/lib')
('/opt/ragout-2.0-linux-x86_64', '/opt/ragout-2.0-linux-x86_64/lib')
Traceback (most recent call last):
  File "/opt/ragout-2.0-linux-x86_64/ragout.py", line 33, in <module>
    from ragout.main import main
  File "/opt/ragout-2.0-linux-x86_64/ragout.py", line 33, in <module>
    from ragout.main import main
ImportError: No module named main

無論出於何種原因,它都會打印兩次,並且-盡管路徑正確-但仍然無法從本地模塊導入。 有任何想法嗎?

我認為這是一個權限問題。 請參閱此堆棧溢出問題 ,用戶報告一個非常相似的問題。

  • 您創建了位置,因此您具有該位置的權限並可以將其導入。
  • 其他用戶沒有權限,無法從他們無法讀取的文件夾中導入。

解決方案:確保所有適當的用戶都在一個對該文件夾至少具有讀取權限的用戶組中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM