2017-02-04 40 views
0

我所有的文件都在同一目錄不能導入函數名

我在python新鮮,我想代碼的功能在預處理文件是這樣的:

#Preprocessing file 
from dateutil import parser 
def dropOutcomeSubtype(DataFrame): 
    DataFrame.drop('OutcomeSubtype',axis=1,inplace='True') 

def convertTimestampToTime(Serie): 
    for i in range(0,len(Serie)): 
     parser.parse(Serie[i]).time() 

然後我「M試圖在導出文件中像這樣使用它:

#Import external librairies 
import pandas as pd 
import numpy as np 
import re 

#import our librairy 
from Preprocessing import convertTimestampToTime, dropOutcomeSubtype 

#Reading 
Datas = pd.read_csv("../Csv/train.csv", sep=",", na_values=['NaN']) 

dropOutcomeSubtype(Datas) 
convertTimestampToTime(Datas.DateTime) 

,當我嘗試在我的OSX外殼採用此配置運行代碼: 的Python 3.5.2 |蟒蛇4.2.0(x86_64的)| IPython的5.1.0

我得到這個錯誤:無法導入名稱 'convertTimestampToTime'

,如果改變我的import語句是這樣的:

from Preprocessing import * 

我得到這個錯誤:名稱 'convertTimestampToTime' 是未定義

你能解釋一下爲什麼請你解釋一下嗎?

先謝謝您

+0

添加以下代碼它「當前工作目錄」 searchs'Preprocessing.py' - 它可能比腳本文件夾不同。如果它在CWD(當前工作目錄)中找不到,那麼它會嘗試導入已安裝的模塊 - 嘗試「導入預處理」和「打印(預處理.__文件__)'以查看導入的文件。 – furas

+0

@furas等等?我無法明白你的觀點。你建議我做什麼? –

+0

首先嚐試'導入預處理'和'打印(預處理.__文件__)'以查看導入的文件。 – furas

回答

0

在這種情況下,您可以添加mod路徑到sys.path。如果雙方在同一目錄起初的主代碼

import os 
import sys 
here = os.path.abspath(os.path.dirname(__file__)) 
sys.path.append(here) 
+0

我試過了,但它不起作用。 謝謝你的回答 –

+0

也許你必須使用'insert(0,here)'而不是'append(here)'將這個文件夾放在其他文件夾之前,該文件夾也可以有文件'Preprocessing.py' – furas