无法导入已安装的python Twitter模块

时间:2015-12-26 01:05:27

标签: python

$ python3 setup-py install

....

Installed /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/twitter-1.17.1-py3.5.egg
Processing dependencies for twitter==1.17.1
Finished processing dependencies for twitter==1.17.1

$ python3 twitter.py
Traceback (most recent call last):
  File "twitter.py", line 1, in <module>
    from twitter import Twitter 
  File "/Users/eddiee/2_python/twitter.py", line 1, in <module>
    from twitter import Twitter 
ImportError: cannot import name 'Twitter'

可能导致问题的原因是:

由于Mac上预安装的python的限制,我安装了另一个新的python并更改了路径。但我不知道如何将模块安装到新的python中。

2 个答案:

答案 0 :(得分:1)

埃迪:

尝试将导入行更改为:

#include "StdAfx.h"

SQLCONNECT cSQL;


void ReadySQLConnect()
{
    //cSQL.Connect();
    if (cSQL.Connect() == FALSE)
    {
        MessageBoxA(0, "Failed to connect to Database!", "Error", MB_OK);
    }
}

SQLCONNECT::SQLCONNECT()
{
    this->m_ColCount = -1;
    this->m_hConnection = NULL;
    this->m_hEnviroment = NULL;
    this->m_hStmt = NULL;
    memset(this->m_SQLColName, 0, sizeof(this->m_SQLColName));
    memset(this->m_SQLData, 0, sizeof(this->m_SQLData));
    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &this->m_hEnviroment);
    SQLSetEnvAttr(this->m_hEnviroment, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_NTS);
}

SQLCONNECT::~SQLCONNECT()
{
    if (this->m_hStmt != SQL_NULL_HANDLE)
        SQLFreeHandle(SQL_HANDLE_STMT, this->m_hStmt);

    if (this->m_hConnection != SQL_NULL_HANDLE)
        SQLFreeHandle(SQL_HANDLE_DBC, this->m_hConnection);

    if (this->m_hEnviroment != SQL_NULL_HANDLE)
        SQLFreeHandle(SQL_HANDLE_ENV, this->m_hEnviroment);
}


BOOL SQLCONNECT::Connect()
{
    GetPrivateProfileStringA("SQL", "User", "sa", this->m_szUser, 64, SQL_PATH);
    GetPrivateProfileStringA("SQL", "Password", "123456", this->m_szPassword, 64, SQL_PATH);
    GetPrivateProfileStringA("SQL", "Database", "MuOnline", this->m_szDatabase, 64, SQL_PATH);

    SQLHANDLE rgbValue;

    SQLAllocHandle(SQL_HANDLE_DBC, this->m_hEnviroment, &this->m_hConnection);
    SQLSetConnectAttr(this->m_hConnection, SQL_LOGIN_TIMEOUT, &rgbValue, 0);

    SQLRETURN Result = SQLConnect(this->m_hConnection, (SQLTCHAR *)this->m_szDatabase, SQL_NTS,
        (SQLTCHAR *)this->m_szUser, SQL_NTS, (SQLTCHAR *)this->m_szPassword, SQL_NTS);

    if (Result != SQL_SUCCESS && Result != SQL_SUCCESS_WITH_INFO)
    {
        SQLSMALLINT sRecord = 1, MsgLen;
        SQLTCHAR SqlState[6], SQLMsgError[SQL_MAX_MESSAGE_LENGTH];
        SQLINTEGER NativeError;

        if (SQLGetDiagRec(SQL_HANDLE_DBC, this->m_hConnection, sRecord, SqlState, &NativeError, SQLMsgError, sizeof(SQLMsgError), &MsgLen) != SQL_NO_DATA)
        {
            //cLog.ConsoleOutput("SQLSTATE:%s, Diagnosis:%s", SqlState, SQLMsgError);
        }

        return FALSE;
    }

    Result = SQLAllocHandle(SQL_HANDLE_STMT, this->m_hConnection, &this->m_hStmt);

    if (Result != SQL_SUCCESS && Result != SQL_SUCCESS_WITH_INFO)
    {
        return FALSE;
    }

    //cLog.ConsoleOutput("[SQL] Connection successfully");
    ReadyTableInstallation();
    return TRUE;
}


BOOL SQLCONNECT::ReConnect()
{
    return this->Connect();
}

BOOL SQLCONNECT::Execute(TCHAR * lpszStatement, ...)
{
    TCHAR szStatement[1024];

    va_list pArguments;
    va_start(pArguments, lpszStatement);
    //wvsprintf(szStatement, lpszStatement, pArguments);
    vsprintf(szStatement, lpszStatement, pArguments);
    va_end(pArguments);

    SQLRETURN Result = SQLExecDirect(this->m_hStmt, (SQLTCHAR *)szStatement, SQL_NTS);

    if (Result != SQL_SUCCESS && Result != SQL_SUCCESS_WITH_INFO && Result != SQL_NO_DATA)
    {
        this->Diagnosis(szStatement);
        return FALSE;
    }

    SQLRowCount(this->m_hStmt, &this->m_RowCount);
    SQLNumResultCols(this->m_hStmt, &this->m_ColCount);

    if (this->m_ColCount >= MAX_COLUMNS - 1)
    {
        //cLog.ConsoleOutput("[CQuery] ColCount >= MAX_COLUMNS-1");
        return FALSE;
    }

    // Case just EXEC
    if (this->m_ColCount == 0)
    {
        this->Close();
        return TRUE;
    }

    for (int iColPos = 0; iColPos < this->m_ColCount; iColPos++)
    {
        memset(this->m_SQLData[iColPos], 0, sizeof(this->m_SQLData[iColPos]));

        SQLBindCol(this->m_hStmt, iColPos + 1, SQL_CHAR, this->m_SQLData[iColPos],
            sizeof(this->m_SQLData[0]) - 1, &this->m_SQLDataLen[iColPos]);
        SQLDescribeCol(this->m_hStmt, iColPos + 1, this->m_SQLColName[iColPos],
            sizeof(this->m_SQLColName[iColPos]), NULL, NULL, NULL, NULL, NULL);
    }

    return TRUE;
}

void SQLCONNECT::Close()
{
    SQLCloseCursor(this->m_hStmt);
    SQLFreeStmt(this->m_hStmt, 2);
}

SQLRETURN SQLCONNECT::Fetch()
{
    return SQLFetch(this->m_hStmt);
}

DWORD SQLCONNECT::GetRowCount()
{
    return this->m_RowCount;
}

int SQLCONNECT::FindIndex(LPTSTR ColName)
{
    for (short i = 0; i<this->m_ColCount; i++)
    {
        if (this->m_SQLColName[i][0] == ColName[0])
        {
            if (lstrcmp((TCHAR *)this->m_SQLColName[i], (TCHAR *)ColName) == 0)
            {
                return i;
            }
        }
    }

    return -1;
}


void SQLCONNECT::GetAsString(LPTSTR ColName, LPTSTR pOutBuffer)
{
    int iIndex = this->FindIndex(ColName);

    if (iIndex != -1)
    {
        lstrcpy(pOutBuffer, this->m_SQLData[iIndex]);
    }
    else
    {
        pOutBuffer[0] = 0;
    }
}


DWORD SQLCONNECT::GetAsInteger(LPTSTR ColName)
{
    int iIndex = this->FindIndex(ColName);

    if (iIndex != -1)
    {
        return atoi(this->m_SQLData[iIndex]);
    }

    return -1;
}


QWORD SQLCONNECT::GetAsInteger64(LPTSTR ColName)
{
    int iIndex = this->FindIndex(ColName);

    if (iIndex != -1)
    {
        return _atoi64(this->m_SQLData[iIndex]);
    }

    return -1;
}

float SQLCONNECT::GetAsFloat(LPTSTR ColName)
{
    int iIndex = this->FindIndex(ColName);

    if (iIndex != -1)
    {
        return (float)atof(this->m_SQLData[iIndex]);
    }

    return -1;
}

void SQLCONNECT::Diagnosis(char* Query)
{
    SQLSMALLINT sRecord = 1, MsgLen;
    SQLTCHAR SqlState[6], SQLMsgError[SQL_MAX_MESSAGE_LENGTH];
    SQLINTEGER NativeError;

    while (SQLGetDiagRec(SQL_HANDLE_STMT, this->m_hStmt, sRecord,
        SqlState, &NativeError, SQLMsgError, sizeof(SQLMsgError), &MsgLen) != SQL_NO_DATA)
    {
        //cLog.ConsoleOutput("SQLSTATE:%s, Diagnosis:%s - %s", SqlState, SQLMsgError, Query);
        sRecord++;
    }

    if (!lstrcmp((TCHAR *)SqlState, "08S01"))   // Communication Link Failure
        this->ReConnect();
}


int SQLCONNECT::GetResult(int iIndex)
{
    return atoi(this->m_SQLData[iIndex]);
}


QWORD SQLCONNECT::GetResult64(int iIndex)
{
    return _atoi64(this->m_SQLData[iIndex]);
}

int SQLCONNECT::GetAsBinary(LPTSTR lpszStatement, LPBYTE OUT lpszReturnBuffer)
{
    SQLCHAR * pSQLBuf;
    SQLINTEGER BufLen;
    SQLCHAR SQLBinary[10000];
    SQLINTEGER lOfs = 0;
    SQLINTEGER SQLLen;
    SQLRETURN SQLResult;

    //SQLAllocHandle(SQL_HANDLE_STMT, this->m_hConnection, &this->m_hStmt);

    SQLResult = SQLExecDirect(this->m_hStmt, (SQLTCHAR *)lpszStatement, SQL_NTS);

    if (SQLResult != SQL_SUCCESS)
    {
        this->Diagnosis(lpszStatement);
        return -1;
    }

    while (true)
    {
        SQLResult = SQLFetch(this->m_hStmt);

        if (SQLResult == SQL_NO_DATA)
            break;

        pSQLBuf = lpszReturnBuffer;

        while (true)
        {

            SQLResult = SQLGetData(this->m_hStmt,
                1, SQL_C_BINARY, SQLBinary, sizeof(SQLBinary), &SQLLen);

            if (SQLResult == SQL_NO_DATA)
                break;

            if (SQLLen == -1)
            {
                this->Close();
                return 0;
            }

            if (SQLResult == SQL_SUCCESS)
            {
                BufLen = SQLLen;
            }
            else
            {
                BufLen = sizeof(SQLBinary);
            }

            lOfs += BufLen;
            memcpy(pSQLBuf, SQLBinary, BufLen);
            pSQLBuf = &pSQLBuf[lOfs];
        }
    }

    //SQLFreeHandle(SQL_HANDLE_STMT, this->m_hStmt);
    return BufLen;
}


void SQLCONNECT::SetAsBinary(LPTSTR lpszStatement, LPBYTE lpBinaryBuffer, SQLUINTEGER BinaryBufferSize)
{
    SQLINTEGER cbValueSize = -0x64 - BinaryBufferSize;
    SQLPOINTER pToken;
    BYTE cBUFFER[10000];
    SQLRETURN Result;

    SQLBindParameter(this->m_hStmt, 1, SQL_PARAM_INPUT,
        SQL_C_BINARY, SQL_LONGVARBINARY, BinaryBufferSize, 0, (SQLPOINTER)1, 0, &cbValueSize);

    SQLExecDirect(this->m_hStmt, (SQLTCHAR *)lpszStatement, SQL_NTS);
    Result = SQLParamData(this->m_hStmt, &pToken);

    int lOfs = 0;

    while (Result == SQL_NEED_DATA)
    {
        memcpy(cBUFFER, lpBinaryBuffer, sizeof(cBUFFER));
        Result = SQLPutData(this->m_hStmt, cBUFFER, BinaryBufferSize);
        Result = SQLParamData(this->m_hStmt, &pToken);
        lOfs += sizeof(cBUFFER);
    }

    SQLParamData(this->m_hStmt, &pToken);
    this->Close();
}

void SQLCONNECT::Disconnect()
{
    if (this->m_hStmt)
        SQLFreeHandle(SQL_HANDLE_STMT, this->m_hStmt);

    if (this->m_hConnection)
        SQLDisconnect(this->m_hConnection);

    if (this->m_hConnection)
        SQLFreeHandle(SQL_HANDLE_DBC, this->m_hConnection);

    this->m_hStmt = NULL;
    this->m_hConnection = NULL;
}

或:

    import twitter

希望它有所帮助。

答案 1 :(得分:0)

这里的问题是我将我的文件命名为“twitter.py”。当我导入twitter模块时,python会自动导入文件本身,因为当前文件比模块具有更高的优先级。只需更改文件名即可解决问题。