\name{packageName}
\alias{packageName}
\title{Find Package Associated with an Environment}
\description{
Many environments are associated with a package; this function
attempts to determine that package.
}
\usage{
packageName(env = parent.frame())
}
\arguments{
  \item{env}{
The environment whose name we seek.
}
}
\details{

Environment \code{env} would be associated with a package if
\code{\link{topenv}(env)} is the namespace environment for that
package.  Thus when \code{env} is the environment associated with
functions inside a package, or local functions defined within them,
\code{packageName} will normally return the package name.

Not all environments are associated with a package:  for example, 
the global environment, or the evaluation frames of functions defined
there.  \code{packageName} will return \code{NULL} in these cases.
}
\value{
A length one character vector containing the name of the package,
or \code{NULL} if there is no name.
}
\seealso{
\code{\link[methods]{getPackageName}} is a more elaborate function
that can construct a name if none is found.
}
\examples{
packageName()
packageName(environment(mean))
}
\keyword{ utilities }
