2013-10-04 58 views
0

我有一個私人模塊,無論好壞,我叫time。 我有另一個模塊,我叫駐留在它使用redis-py模塊相同的目錄中。如何指示蟒蛇忽略進口

不幸的是,我的time模塊不會做標準time模塊究竟是幹什麼的,並因此我得到了以下錯誤:

$ /opt/stuff/bin/python /opt/stuff/lib/utils/graph.py 
Traceback (most recent call last): 
    File "/opt/stuff/lib/utils/graph.py", line 6, in <module> 
    import redis 
    File "/opt/stuff/lib/python2.6/site-packages/redis/__init__.py", line 1, in <module> 
    from redis.client import Redis, StrictRedis 
    File "/opt/stuff/lib/python2.6/site-packages/redis/client.py", line 6, in <module> 
    import time as mod_time 
    File "/opt/stuff/lib/utils/time.py", line 5, in <module> 
    import pytz 
    File "/usr/lib/python2.6/site-packages/pytz/__init__.py", line 32, in <module> 
    from pkg_resources import resource_stream 
    File "/opt/stuff/lib/python2.6/site-packages/pkg_resources.py", line 761, in <module> 
    class Environment(object): 
    File "/opt/stuff/lib/python2.6/site-packages/pkg_resources.py", line 764, in Environment 
    def __init__(self, search_path=None, platform=get_supported_platform(), python=PY_MAJOR): 
    File "/opt/stuff/lib/python2.6/site-packages/pkg_resources.py", line 140, in get_supported_platform 
    plat = get_build_platform(); m = macosVersionString.match(plat) 
    File "/opt/stuff/lib/python2.6/site-packages/pkg_resources.py", line 282, in get_build_platform 
    from distutils.util import get_platform 
    File "/opt/stuff/lib64/python2.6/distutils/__init__.py", line 25, in <module> 
    from distutils import dist, sysconfig 
    File "/usr/lib64/python2.6/distutils/dist.py", line 21, in <module> 
    from distutils.fancy_getopt import FancyGetopt, translate_longopt 
    File "/usr/lib64/python2.6/distutils/fancy_getopt.py", line 32, in <module> 
    longopt_xlate = string.maketrans('-', '_') 
AttributeError: 'module' object has no attribute 'maketrans' 

刪除我的time模塊矯正錯誤。有沒有辦法我可以破解我的graph.py基本上忽略我的time模塊和使用系統之一?我試過使用from __future__ import absolute_import,但這似乎沒有什麼區別。

+0

這不僅僅是你的'時間'模塊,還有另一個名爲'string'的模塊。 –

+0

您必須重命名模塊,您無法告訴其他模塊切換到絕對導入。 –

回答

1

這不是你的模塊導入time;這是redis.client

您的time頂級模塊。其他Python代碼無法區分您的模塊和標準庫版本。

您可以改變sys.path順序並確保首先找到標準庫模塊,但是您應該重新命名模塊。給它一個不同的名字很容易。