Python Py2exe错误:尚未支持命名空间包:跳过包';雪花';
我一直在尝试使用py2exe为以下脚本生成.exe:Python Py2exe错误:尚未支持命名空间包:跳过包';雪花';,python,py2exe,snowflake-cloud-data-platform,namespace-package,Python,Py2exe,Snowflake Cloud Data Platform,Namespace Package,我一直在尝试使用py2exe为以下脚本生成.exe: import snowflake.connector import os import sys # Setting your account information ACCOUNT = '########' USER = '#######' PASSWORD = '#######' ROLES=[] DATABASE=[] ROLES.append(sys.argv[1]) DATABASE.append(sys.argv[2])
import snowflake.connector
import os
import sys
# Setting your account information
ACCOUNT = '########'
USER = '#######'
PASSWORD = '#######'
ROLES=[]
DATABASE=[]
ROLES.append(sys.argv[1])
DATABASE.append(sys.argv[2])
print(ROLES)
print(DATABASE)
cnx = snowflake.connector.connect(
user=USER,
password=PASSWORD,
account=ACCOUNT,
)
cur = cnx.cursor()
list_of_grants=[]
for rl in ROLES:
print("Role: "+rl )
db_res=cur.execute("SHOW DATABASES").fetchall()
for db in DATABASE:
print("Database: "+ db)
use_db_query = "USE DATABASE " + db
print(use_db_query)
cur.execute(use_db_query)
schema_res= cur.execute("SHOW SCHEMAS").fetchall()
for sch in schema_res:
print("schema: "+ sch[1])
list_of_grants.append("GRANT ALL ON SCHEMA "+db+"."+sch[1]+" to role "+rl+" with grant option")
use_db_query = "USE SCHEMA " + sch[1]
cur.execute(use_db_query)
tables_res=cur.execute("SHOW TABLES IN "+sch[1]).fetchall()
for tbl in tables_res:
print("table: "+ tbl[1])
list_of_grants.append("GRANT ALL ON TABLE "+db+"."+sch[1]+"."+tbl[1]+" to role "+rl+" with grant option")
for grant in list_of_grants:
cur.execute(grant)
from distutils.core import setup
import snowflake.connector
import py2exe, sys, os
sys.argv.append('py2exe')
setup(
console=['grants.py'],
options = {
'py2exe': {
'packages': ['snowflake']
}
}
)
代码非常简单,工作起来很有魅力
我希望使用py2exe将其转换为.exe,但当时我遇到以下错误:
running py2exe
Error: Namespace packages not yet supported: Skipping package 'snowflake'
Traceback (most recent call last):
File "setup.py", line 13, in <module>
'packages': ['snowflake']
File "C:\Anaconda3\lib\distutils\core.py", line 148, in setup
dist.run_commands()
File "C:\Anaconda3\lib\distutils\dist.py", line 955, in run_commands
self.run_command(cmd)
File "C:\Anaconda3\lib\distutils\dist.py", line 974, in run_command
cmd_obj.run()
File "C:\Anaconda3\lib\site-packages\py2exe\distutils_buildexe.py", line 188, in run
self._run()
File "C:\Anaconda3\lib\site-packages\py2exe\distutils_buildexe.py", line 267, in _run
builder.analyze()
File "C:\Anaconda3\lib\site-packages\py2exe\runtime.py", line 168, in analyze
mf.import_package(modname)
File "C:\Anaconda3\lib\site-packages\py2exe\mf3.py", line 92, in import_package
self.import_hook(name)
File "C:\Anaconda3\lib\site-packages\py2exe\mf3.py", line 120, in import_hook
module = self._gcd_import(name)
File "C:\Anaconda3\lib\site-packages\py2exe\mf3.py", line 274, in _gcd_import
return self._find_and_load(name)
File "C:\Anaconda3\lib\site-packages\py2exe\mf3.py", line 337, in _find_and_load
raise ImportError(name)
ImportError: snowflake
我环顾四周,找不到这个问题的答案。如果有人有主意的话
提前感谢你的帮助
snowflake
是一个名称空间包,而不是实际的包。因此,进口商无法接触到雪花.connector。要解决软件包问题,您需要在Snowflake目录中添加\uuuu init\uuuuu.py
。尽管有此修复,但在使用py2exe创建可执行文件时似乎还存在其他问题。我建议使用“pyinstaller”,它可以很好地创建可执行文件
import snowflake.connector
def createSnowflakeConn():
print("Creating snowflake connection")
__conn = snowflake.connector.connect(
user="your login name",
password="user password",
account="account id",
role="login role",
warehouse="warehouse to query"
)
return __conn
class WarehouseCursor(object):
def __init__(self):
self.__cursor = None
self.__conn = None
self.__conn = createSnowflakeConn()
以上代码将帮助您连接雪花。使用snowflake.connector软件包可以解决您的问题Hi@Oliver,谢谢您的回答,我尝试了pyinstaller,但遇到了一些问题。我会更深入地研究它,看看问题出在哪里。如果这样做有效的话,我会将这个主题标记为关闭。